<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem skok</title>
<link>https://forum.pasja-informatyki.pl/tag/skok</link>
<description>Powered by Question2Answer</description>
<item>
<title>Szybowanie Unity 3d/C#</title>
<link>https://forum.pasja-informatyki.pl/567389/szybowanie-unity-3d-c%23</link>
<description>

&lt;p&gt;Pewnie zastanawiacie się po co was tu wezwałem :D&lt;/p&gt;



&lt;p&gt;A tak poważnie, podczas tworzenia skryptu poruszania postaci w unity 3D (perspektywa FPS) oraz używając języka C# teoretycznie wszystko działa. Biegam i skacze, ale problem pojawia się przy schodzeniu z górki lub skakaniu, tzn zamiast ładnie szybko opadać czy tam spadać to postać tak jakby szybowała. Zmiana grawitacji w Rigidbody, ustawieniach projektu oraz poprzez skrypt nic nie dała. Zmiana masy postaci również.&lt;/p&gt;



&lt;p&gt;Próbowałem zrobić to w sposób zmiany velocity na new Vector3(0f, -1f, 0f); gdzie wartość Y była różna, problem zmienia się na brak możliwości skoku oraz wchodzenia pod górkę.&lt;/p&gt;



&lt;p&gt;Będę wdzięczny za wszelkie linki i podpowiedzi. W unity 3D i c# jestem od dzisiaj XD&lt;/p&gt;



&lt;p&gt;Kod:&lt;/p&gt;



&lt;pre class=&quot;brush:csharp;&quot;&gt;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Controller : MonoBehaviour
{
    private Vector3 PlayerMovementInput;
    private Vector2 PlayerMouseInput;
    private float xRot;

    [SerializeField] private Transform FeetTransform;
    [SerializeField] private LayerMask FloorMask;
    [SerializeField] private Rigidbody PlayerBody;
    [SerializeField] private Camera PlayerCamera;
    [Space]
    [SerializeField] private float Speed;
    [SerializeField] private float Sensitivity;
    [SerializeField] private float Jumpforce;
    [SerializeField] private float Sprint;
    // Update is called once per frame
    void Update()
    {
        PlayerMovementInput = new Vector3(Input.GetAxis(&quot;Horizontal&quot;), 0f, Input.GetAxis(&quot;Vertical&quot;));
        PlayerMouseInput = new Vector2(Input.GetAxis(&quot;Mouse X&quot;), Input.GetAxis(&quot;Mouse Y&quot;));
        MovePlayer();
        MovePlayerCamera();
    }
    private void MovePlayer()
    {
        Vector3 MoveVector = transform.TransformDirection(PlayerMovementInput) * Speed;
        PlayerBody.velocity = new Vector3(MoveVector.x, PlayerBody.velocity.y, MoveVector.z);
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (Physics.CheckSphere(FeetTransform.position, 0.1f, FloorMask))
            {
                PlayerBody.AddForce(Vector3.up * Jumpforce, ForceMode.Impulse);
            }
        }
    }
    private void MovePlayerCamera()
    {
        xRot -= PlayerMouseInput.y * Sensitivity;

        transform.Rotate(0f, PlayerMouseInput.x * Sensitivity, 0f); 
        PlayerCamera.transform.localRotation = Quaternion.Euler(xRot, 0f, 0f);
    }
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/567389/szybowanie-unity-3d-c%23</guid>
<pubDate>Tue, 31 May 2022 21:28:08 +0000</pubDate>
</item>
<item>
<title>unity 2d- skok postaci</title>
<link>https://forum.pasja-informatyki.pl/557710/unity-2d-skok-postaci</link>
<description>

&lt;p&gt;Potrzebuje pomocy!
&lt;br&gt;
Przeszukałam wiele forum i innych i nie mogę zaprogramować skoku w moim krypcie postac moze latac a nie powinna wedlug moich zamyslow... Proszę o pomoc potrzebuje aby potać mogła płynnie skakać. Oto skrypt (chodzenie też tu jest)
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:csharp;&quot;&gt;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{

    public float moveSpeed;
    public float jumpHeight;

    public Transform groundCheck;
    public float groundCheckRadius;
    public LayerMask WhatIsGround;
    private bool grouned;
    public bool DoubleJump;
    public float speed = 3f;
    private Rigidbody2D rgbody;

    // Use this for initialization
    void Start()
    {
        rgbody = GetComponent&amp;lt;Rigidbody2D&amp;gt;();
    }

    void FixedUpdate() {

        grouned = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, WhatIsGround);
    
    }

    // Update is called once per frame
    void Update()
    {
        if (grouned)
            DoubleJump = false;


        if (Input.GetKey(KeyCode.W))
        {
            rgbody.velocity = new Vector2(rgbody.velocity.x, speed);
        }
if (Input.GetKey(KeyCode.D))
        {
            GetComponent&amp;lt;Rigidbody2D&amp;gt;().velocity = new Vector2(moveSpeed, GetComponent&amp;lt;Rigidbody2D&amp;gt;().velocity.y);
        }

        if (Input.GetKey(KeyCode.A))
        {
            GetComponent&amp;lt;Rigidbody2D&amp;gt;().velocity = new Vector2(-moveSpeed, GetComponent&amp;lt;Rigidbody2D&amp;gt;().velocity.y);
        }

    }
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/557710/unity-2d-skok-postaci</guid>
<pubDate>Mon, 27 Dec 2021 12:55:59 +0000</pubDate>
</item>
<item>
<title>[Unity] Skakanie</title>
<link>https://forum.pasja-informatyki.pl/489084/unity-skakanie</link>
<description>

&lt;p&gt;Witam.
&lt;br&gt;
W Unity napisałem skrypt odpowiedzialny za skakanie. Skok wywołuje poprzez AddForce:&lt;/p&gt;



&lt;pre class=&quot;brush:csharp;&quot;&gt;
GetComponent&amp;lt;Rigidbody&amp;gt;().AddForce(0, jumpForce, 0, ForceMode.Impulse);&lt;/pre&gt;



&lt;p&gt;Problem polega na tym, że system fizyki w unity dziwnie przelicza te siły i obiekt skacze raz wyżej raz niżej (tak jak na tym filmie: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=MT7tSRSvTJs&quot;&gt;https://www.youtube.com/watch?v=MT7tSRSvTJs&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Jak zrobić ten skok bardziej statycznym, aby za każdym razem był na tą samą wysokość?
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>OpenGL, Unity</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/489084/unity-skakanie</guid>
<pubDate>Sun, 17 May 2020 14:27:51 +0000</pubDate>
</item>
<item>
<title>Dlaczego moja postać skacze w nieskończoność ? W unity</title>
<link>https://forum.pasja-informatyki.pl/475581/dlaczego-moja-postac-skacze-w-nieskonczonosc-w-unity</link>
<description>Programuje ostatnio w unity napisałem kod na skok ale nie wiem jak zablokować możliwość nieskończonego skoku w powietrzu</description>
<category>C#</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/475581/dlaczego-moja-postac-skacze-w-nieskonczonosc-w-unity</guid>
<pubDate>Fri, 13 Mar 2020 13:15:19 +0000</pubDate>
</item>
<item>
<title>Python pygame - skakanie</title>
<link>https://forum.pasja-informatyki.pl/441371/python-pygame-skakanie</link>
<description>

&lt;p&gt;Witam, wczoraj zacząłem uczyć się pygame i przy próbie zrobienia funkcji na skakanie okazuje się, że działa, ale gdy trzymam cały czas spację. Gdy puszczam to obiekt pozostaje w miejscu, w którym skończył, a jak wiadomo wolałbym aby dokończył skok.. Oto kod:&lt;/p&gt;



&lt;pre class=&quot;brush:python;&quot;&gt;
import pygame


class Player:

    x = 20
    y = 500
    vel = 5

    radius = 10

    jump_vel = 5
    m = 8
    isJumping = False

    def move_left(self):
            self.x -= self.vel

    def move_right(self):
        self.x += self.vel

    def jump(self):
        self.isJumping = True

    def update(self):
        if self.isJumping:
                if self.jump_vel &amp;gt; 0:
                    f = (self.jump_vel ** 2 * 0.5 * self.m)
                else:
                    f = -(self.jump_vel ** 2 * 0.5 * self.m)

                self.y -= f
                self.jump_vel -= 0.5

                if self.y &amp;gt;= 500:
                    self.y = 500
                    self.isJumping = False
                    self.jump_vel = 5


class App:

    windowWidth = 500
    windowHeight = 600

    def __init__(self):
        pygame.init()
        self.win = pygame.display.set_mode((self.windowWidth, self.windowHeight))
        pygame.display.set_caption(&quot;My first game&quot;)
        self.isRunning = True
        self.player = Player()
        self.run()

    def draw_player(self):
        self.win.fill((0, 0, 0))
        pygame.draw.circle(self.win, (250, 0, 0), (int(self.player.x), int(self.player.y)), int(self.player.radius))

    def run(self):
        while self.isRunning:

            pygame.time.delay(10)
            keys = pygame.key.get_pressed()

            for event in pygame.event.get():
                if event.type == pygame.QUIT or keys[pygame.K_ESCAPE]:
                    self.isRunning = False

            if keys[pygame.K_LEFT]:
                if self.player.x &amp;gt; self.player.vel:
                    self.player.move_left()

            if keys[pygame.K_RIGHT]:
                if self.player.x &amp;lt; (self.windowWidth - self.player.radius - self.player.vel):
                    self.player.move_right()

            if keys[pygame.K_SPACE] or keys[pygame.K_UP]:
                self.player.jump()
                self.player.update()

            self.draw_player()
            pygame.display.update()


app = App()
pygame.quit()
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Python</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/441371/python-pygame-skakanie</guid>
<pubDate>Mon, 22 Jul 2019 07:38:33 +0000</pubDate>
</item>
<item>
<title>Skakanie postaci</title>
<link>https://forum.pasja-informatyki.pl/421532/skakanie-postaci</link>
<description>

&lt;p&gt;Witam,&lt;/p&gt;



&lt;p&gt;natrafiłem na problem z zaprogramowaniem mojej postaci w grze 2D na poruszanie. To dopiero pączątek mojej przygody z Unity i c# więc nie zabardzo wiem co robić.&lt;/p&gt;



&lt;pre class=&quot;brush:csharp;&quot;&gt;
using UnityEngine;
using System.Collections;
  
public class Movement1 : MonoBehaviour {
    public float speed = 3f;
    private Rigidbody2D rgbody;
      
    // Use this for initialization
    void Start () {
     rgbody = GetComponent&amp;lt;Rigidbody2D&amp;gt;();
    }
      
    // Update is called once per frame
    void Update () {
  
        if (Input.GetKey (KeyCode.W)){
                          rgbody.velocity = new Vector2(rgbody.velocity.x, speed);
                } 
    }
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>OpenGL, Unity</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/421532/skakanie-postaci</guid>
<pubDate>Sun, 24 Mar 2019 16:34:15 +0000</pubDate>
</item>
<item>
<title>SFML skok(fizyka), problem logiczny</title>
<link>https://forum.pasja-informatyki.pl/178705/sfml-skok-fizyka-problem-logiczny</link>
<description>

&lt;p&gt;Witam, wstępnie napisałem sobie jak miałby wyglądać skok w SFMLu w płaszczyźnie pionowej.&lt;/p&gt;



&lt;p&gt;Aby było podobnie jak na Ziemi przyjąłem sobie g=10m/s^2&lt;/p&gt;



&lt;p&gt;Przyjąłem, że 100 pixeli będzie odpowiadało 2 metrom, więc 1 metr to 50 px. Program wykonuje się 60 razy na sekundę.&lt;/p&gt;



&lt;p&gt;Więc g w grze = 10m/s^2 * 50 / 60*60&lt;/p&gt;



&lt;p&gt;Chcę, aby postać skakała na te 100 pixeli do góry, więc z zasady zachowania energii liczę prędkość początkową:
&lt;br&gt;
v=sqrt(2*g*h)&lt;/p&gt;



&lt;p&gt;Obliczone wartości deklaruje w klasie (vp - prędkość początkowa i g deklaruje w klasie).&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
		if (player_r.getPosition().y&amp;lt;=200) {
			t += time.restart().asSeconds();
			v = vp - g*t;
			player_r.move(0, v);
			act_frame = 0;
			window.draw(player_r);
		}
		else {
			player_r.setPosition(player_r.getPosition().x, 200);
			v = vp;
			std::cout &amp;lt;&amp;lt; t&amp;lt;&amp;lt;std::endl;
			t = 0;
		}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;I nie rozumiem paru rzeczy, w zasadzie vp to tak na prawdę droga, która wykonuje się co klatkę, a nie prędkość, a ja obliczyłem prędkość więc jednostka tego wygląda tak [pixel/czas_klatki/czas_klatki]. W zasadzie jednostkę dobrałem tak, że nie potrzeba mnożyć przez czas_klatki, bo to po prostu 1. Ale czemu wszystko zaczyna w przybliżeniu trzymać się kupy jak tylko czynnik g*t pomnożę przez 60? To przypadek? Czy w ogóle dobrze kombinuję?&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-size:22px&quot;&gt;&lt;strong&gt;EDIT: Olśniło mnie jak byłem w toalecie! Chyba dlatego, że pobieram czas&amp;nbsp; sekundach. Ale nadal jeśli ktoś ma ochotę odpowiedzieć na pytanie, czy tak programiści piszą fizykę i czy o z tym wyglądem jednostki &lt;/strong&gt;&lt;/span&gt;[pixel/czas_klatki/czas_klatki] &lt;strong&gt;&lt;span style=&quot;font-size:22px&quot;&gt;jest ok to proszę. :D&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;W razie czego wrzucam klasę:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
	sf::Texture player;
	sf::Sprite player_r;
	sf::Clock frameTime;
	sf::Clock time;
	float t=0;
	float g = -1.4, vp = -16.7, v = vp;
	int act_frame = 0;
	int a;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/178705/sfml-skok-fizyka-problem-logiczny</guid>
<pubDate>Mon, 12 Sep 2016 22:15:35 +0000</pubDate>
</item>
<item>
<title>Poruszanie sie po pliku do zapisu.</title>
<link>https://forum.pasja-informatyki.pl/135266/poruszanie-sie-po-pliku-do-zapisu</link>
<description>Witam, potrzebuje miec możliwosc poruszania się po pliku do zapisu.&lt;br /&gt;
&lt;br /&gt;
Robie maly program ktory do pliku do zapisu przepisuje linijki z pliku do odczytu, ale z roznymi dodatkami, np do kazdej linijki dodaje jakies slowo. Mam jednak problem z tym, ze gdy chce uzyc funkcji jeszcze raz to linijki pojawiaja sie pod zapisanymi wczesniej, a chcialbym dolaczyc je do poprzednich przykladowo.&lt;br /&gt;
&lt;br /&gt;
Plik do oczytu:&lt;br /&gt;
&lt;br /&gt;
Damian&lt;br /&gt;
&lt;br /&gt;
Maciek&lt;br /&gt;
&lt;br /&gt;
Adam&lt;br /&gt;
&lt;br /&gt;
Uzycie funkcji pierwszy raz, plik do zapisu&lt;br /&gt;
&lt;br /&gt;
Damian to&lt;br /&gt;
&lt;br /&gt;
Maciek to&lt;br /&gt;
&lt;br /&gt;
Adam to&lt;br /&gt;
&lt;br /&gt;
Uzycie funkcji drugi raz, plik do zapisu&lt;br /&gt;
&lt;br /&gt;
Damian to programista&lt;br /&gt;
&lt;br /&gt;
Maciek to programista&lt;br /&gt;
&lt;br /&gt;
Adam to programista&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
W tym celu potrzebowalbym wiec wrocic na poczatek pliku do zapisu, a nastepnie&lt;br /&gt;
&lt;br /&gt;
1. Przejsc do konca zapisanej lini&lt;br /&gt;
&lt;br /&gt;
2. Dopisac cos&lt;br /&gt;
&lt;br /&gt;
3. Zejsc linijke nizej&lt;br /&gt;
&lt;br /&gt;
I tak az do konca pliku. Funkcja seekg() dziala tylko w trybie do odczytu, no i nie pozwala mi tak po prostu &amp;quot;zejsc linijke nizej&amp;quot;, bo podajemy tylko numer znaku. Czy sa jakies funkcje pozwalajace poruszac sie po &amp;quot;koordynatach&amp;quot;, w stylu goto(linijka, nr_znaku), oraz znajdujaca numer konca lini, czy zwracajaca boola jesli na taki koniec natrafi?&lt;br /&gt;
&lt;br /&gt;
Jakich funkcji powinienem uzyc w tym miejscu?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/135266/poruszanie-sie-po-pliku-do-zapisu</guid>
<pubDate>Thu, 28 Apr 2016 14:24:25 +0000</pubDate>
</item>
<item>
<title>Jak zaprogramować spadanie postaci po wyskoku , poruszanie się w locie , kierunek skoku ?</title>
<link>https://forum.pasja-informatyki.pl/106764/jak-zaprogramowac-spadanie-postaci-po-wyskoku-poruszanie-sie-locie-kierunek-skoku</link>
<description>

&lt;pre class=&quot;brush:cpp;&quot;&gt;
//---------------------------------------------------------------------------

#include &amp;lt;vcl.h&amp;gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;



TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::lewoTimer(TObject *Sender)
{
        pop-&amp;gt;Left  -= 10;
        if (pop-&amp;gt;Left &amp;lt;= 0 ) pop-&amp;gt;Left = - pop-&amp;gt;Left;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &amp;amp;Key,
      TShiftState Shift)
{
        if (Key == VK_LEFT) lewo-&amp;gt;Enabled = true;
        if (Key == VK_RIGHT) prawo-&amp;gt;Enabled = true;
        if (Key == VK_SPACE) skok-&amp;gt;Enabled = true;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::prawoTimer(TObject *Sender)
{
        pop-&amp;gt;Left +=10  ;
        pop-&amp;gt;Left -=15;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &amp;amp;Key,
      TShiftState Shift)
{
        if (Key == VK_LEFT) lewo-&amp;gt;Enabled = false;
        if (Key == VK_RIGHT) prawo-&amp;gt;Enabled = false;
        if (Key == VK_SPACE) skok-&amp;gt;Enabled = false;pop-&amp;gt;Top -=10;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::skokTimer(TObject *Sender)
{
       pop-&amp;gt;Top -= 10;

}
//--------------------------------------------------------------------------

&lt;/pre&gt;



&lt;p&gt;Witam , chciałem stworzyć grę 2d w borland cpp builder 6 pomyślałem ,że skoro można arkanoida można i zwykłą platformówkę , mam problem z opisaniem skoku , stworzyłem dodatkowy timer który zwiększa wysokość postaci (pop) &amp;nbsp;ale nie mam pojęcia jak ustawić spadanie i jak moge oprogramować poruszanie się w powietrzu , kierunek skoku . Proszę o pomoc!&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/106764/jak-zaprogramowac-spadanie-postaci-po-wyskoku-poruszanie-sie-locie-kierunek-skoku</guid>
<pubDate>Mon, 08 Feb 2016 22:02:25 +0000</pubDate>
</item>
</channel>
</rss>