Как сделать так чтобы мешь двигалась вперед, а по достижению определенной точки возвращалась в исходное положение?
Как сделать так чтобы 3д объект двигался вперед, а по достижению определенной точки возвращалась в исходное положение в юнити? Вернее как это реализовать с помощью си шарп?
Привет!
Если речь идёт об объекте, то нужно создать класс с полем Vector3 startPosition.
В методе старт нужно запомнить начальную позицию, то есть написать:
startPosition = this.transform.position
В методе update сделать проверку
if this.transform.position == определённаяТочка{
this.transform.position = startPosition
}
Но следует учитывать, что это не сработает практически с вероятностью 99%, потому что очень редко в пространстве объект примет ту позицию, которую вы заложите (разве что, вы ТОЧНО знаете, что объект её достигает с точностью до миллионых долей (а то и больше))
Поэтому можно написать что-то вроде
if this.transform.position.x < точка.x
&& this.transform.position.y < точка.у
&& this.transform.position.z < точка.z{
this.transform.position = startPosition
}
(Знаки неравенства поставить нужные)
Движение вперёд можете реализовать следующими способами:
1. С помощью transform.Translate
2. Передвигая координату z. Будет что-то вроде
this.transform.position = new Vector3( this.transform.position.x,
this.transform.position.y,
this.transform.position.z + 1f)
3. Повесить на объект компонент Rigidbody. Затем в скрипте взять её в предварительно созданное поле в методе Start:
переменная = GetComponent()
и в методе Update:
переменная.MovePosition(вектор перемещения)
Я не знаю что такое "мешь". Но, чтобы что-угодно двигалось, надо менять ему координаты, можно например путем задания скорости. И проверять эти координаты, а при достижении определенного значения, сбрасывать их к исходным.