Как я могу переместить объект под углом? - PullRequest
0 голосов
/ 21 февраля 2019
public class moveball : MonoBehaviour
{
    public GameObject player;

    // Start is called before the first frame update
    void Start()
    {
        player = GameObject.Find("Whyareyoulikethis");
        transform.Translate(player.transform.rotation.x, player.transform.rotation.y, 0);
    }

    // Update is called once per frame
    void Update()
    {
    }
}

Я написал этот код.Он помещается внутри объекта (называемого «ballers»), который создается другим игроком при нажатии пробела.Предполагается, что он движется под тем же углом, что и игрок (X - единственное значение вращения игрока, которое изменяется, Y всегда равно 90, а Z всегда равно 0).

Моя логика невероятно запутана, хотя, то, что я имею здесь, это просто моя самая успешная попытка заставить это работать так, как задумано.Это не должно работать, но я не знаю, что будет.Когда transform.Translate помещается в Update (), он стреляет сам со смещением, но в остальном близко к углу игрока.Находясь в «Пуске», он не двигается, потому что я не дал ему скорость.

1 Ответ

0 голосов
/ 21 февраля 2019

Хотя неясно, что именно вы имеете в виду под move an object at an angle Transform.rotation, имеет тип Quaternion, который имеет 4 значения x,y,z,w.Поэтому использование их в

transform.Translate(player.transform.rotation.x, player.transform.rotation.y, 0);

никогда не вернет ожидаемых вами значений.

Вероятно, вам понадобится Transform.eulerAngles , что даст вам Vector3


Однако вы говорите It is supposed to move at the same angle that player is facing, поэтому, скорее всего, это должно быть что-то вроде

transform.Translate(player.transform.forward);

с использованием вектора forward , который указывает в направлении, в котором находится игрок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...