• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Unity 2D - AddForce

0 głosów
38 wizyt
pytanie zadane 2 września w C# przez hydrogeniumoxygenium Nowicjusz (120 p.)

Witam,

Mam problem który próbuję rozwiązać od 2 dni. Oto mój kod:

using UnityEngine;
using System;

public class PlayerMovement : MonoBehaviour
{

    public Transform tr;
    public Rigidbody2D rb;
    public float forward, sideways;

    bool fw = false, r = false, l = false;
    float angle = 0;

    void Update()
    {
        fw = r = l = false;

        if (Input.GetKey("w"))
        {
            fw = true;
        }
        if (Input.GetKey("a"))
        {
            l = true;
        }
        if (Input.GetKey("d"))
        {
            r = true;
        }
    }


    void FixedUpdate()
    {
        if(fw)
        {

            double X = forward * Math.Sin(angle);
            double Y = forward * Math.Cos(angle);
//            Debug.Log(angle.ToString() + " " + X.ToString() + " " + Y.ToString());
            Vector3 v3 = new Vector3(
                float.Parse((tr.position.x + X).ToString()), 
                float.Parse((tr.position.y + Y).ToString()), 
                0) - transform.position;
            Debug.Log(v3);

            rb.AddForce(v3.normalized * forward * Time.deltaTime);
            
        }
        if (l)
        {
            angle += sideways * Time.deltaTime;
        }
        if (r)
        {
            angle -= sideways * Time.deltaTime;
        }
        angle = (angle+360) % 360;

        transform.eulerAngles = Vector3.forward * angle;
    }
}

Może jest lepsze miejsce, gdzie mogę zadać takie pytanie, ale nie umiem go znaleźć. Więc: Dlaczego czego bym nie próbował, nie da się przesunąć gracza? Jeśli ktoś ma pomysł, proszę też o wyjaśnienie dlaczego tak się dzieje. 

1 odpowiedź

0 głosów
odpowiedź 2 września przez Wiciorny Mędrzec (177,410 p.)
    if (Input.GetKey("w"))
        {
            fw = true;
        }
        if (Input.GetKey("a"))
        {
            l = true;
        }
        if (Input.GetKey("d"))
        {
            r = true;
        }
    }

input key nie będzie rozpoznawał tego, żę "w", "a", "d" to są zdarzenia na klawiaturze sprawdz

Input.GetKey(KeyCode.W) 
Input.GetKey(KeyCode.A)
Input.GetKey(KeyCode.D) 

Druga sprawa, spradwziłbym jak odwzorowywane są obliczenia jeśli jednak do nich dochodzi, czy nie są ujemnymi wartościami i po prostu zmiany wychodzą w wymiar którego nie ma,

ostatnią sprawą są momenty wywołań funkcji, których tutaj akurat nie umieściłęś 

Podobne pytania

0 głosów
1 odpowiedź 83 wizyt
pytanie zadane 20 września 2020 w C# przez Mati49 Obywatel (1,830 p.)
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 1 marca 2020 w OpenGL, Unity przez Pabllo26 Użytkownik (620 p.)
0 głosów
0 odpowiedzi 117 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

85,242 zapytań

134,056 odpowiedzi

297,250 komentarzy

56,334 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...