Как мне сдвинуть сферу в сторону, начиная с позиции игрока? - PullRequest
0 голосов
/ 24 февраля 2020

Я играю в Unity . Моя задача состоит в том, чтобы, когда игрок нажимал клавишу «1», он выбрасывал сферу на позицию player.transform.forward, пока не столкнулся с врагом.

Проблема в том, что сфера была застрелена , пока он летит, я могу управлять его движущимся значением X, поворачивая игрока вправо или влево. Поэтому сфера движется со мной, но не должна. Это, конечно, потому что в Update () я двигаюсь это в направлении игрока. Как сделать так, чтобы сфера начинала смотреть в направлении игроков, но после самостоятельного движения?

Это код, который перемещает сферу

private float speed = 4.0f;

void Update()
    {
        transform.Translate(player.transform.forward * Time.deltaTime * speed);
    }

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Создайте его с правильной ориентацией

Instantiate(rangedAttack, spawnPosition, player.transform.rotation);

Теперь его собственный вектор вперед указывает то же направление, что и у игрока.

А затем просто выполните

private float speed = 4.0f;

void Update()
{
    transform.Translate(Vector3.forward * Time.deltaTime * speed);
}

Примечание Translate по умолчанию работает в Space.Self, поэтому локальное пространство этого преобразования. Вы не хотите проходить здесь Вектор Мирового Пространства, а перемещаться только по локальной оси Z!

Если вы перейдете к вектору мирового пространства, вам нужно будет пройти Space.World

transform.Translate(vector, Space.World);
1 голос
/ 24 февраля 2020

Вы можете сохранить его начальное «прямое» направление и ссылаться на него впоследствии

public GameObject player;

private float speed = 4.0f;
private Vector3 direction;

private void Awake() //I used Awake() as example asuming you are instantiating the sphere, 
{                    //but you could set the value of the direction when you press "1" too

    direction = player.transform.forward;
}

void Update()
{
    transform.Translate(direction * Time.deltaTime * speed);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...