Квадратное движение, игнорирующее, на какой стороне оно лежит - PullRequest
0 голосов
/ 21 марта 2020

Я сейчас делаю небольшую игру. Таким образом, квадрат - мой игрок, вы можете двигаться только если вы на платформе. Движение работает отлично, но когда я берусь за другую платформу, квадрат вращается и падает на другую платформу, но с другой стороны. Поэтому, когда я нажимаю «w», он должен прыгать, но вместо этого (например, если он лежит на правой стороне) он будет go вправо. Поэтому мой вопрос: как переместить квадрат, не обращая внимания на то, с какой стороны он лежит. поэтому независимо от того, с какой стороны лежит квадрат, когда я нажимаю «w», я хочу всегда прыгать. Вот мой код Move:

using UnityEngine;

public class Player: MonoBehaviour
{
    public float PlayerMovementSpeed;   
    void OnCollisionStay2D(Collision2D collision)
    {
        if (collision.collider.tag == "Platform")
        {
        if (Input.GetKey("w"))
        {
            transform.Translate(0, PlayerMovementSpeed, 0);
        }

        if (Input.GetKey("a"))
        {
            transform.Translate(-PlayerMovementSpeed, 0, 0);
        }

        if (Input.GetKey("d"))
        {
            transform.Translate(PlayerMovementSpeed, 0, 0);
        }
        }
    }
}

Есть идеи? (Это 2D игра в Unity с использованием C#)

1 Ответ

0 голосов
/ 21 марта 2020

Вместо использования transform.translate я бы порекомендовал hardbody2d.addForce, так как он основывает свои расчеты силы на мире, а не на кубе. Я еще не проверял, но это должно работать. Надеюсь, это поможет!

...