#c# #unity3d
#c# #unity3d
Вопрос:
Я пытаюсь переместить объект со скоростью в точку и заставить его остановиться, когда он достигнет этой точки.
void FixedUpdate()
{
if (transform.position.y == 0f) {
rb.velocity = new Vector2(-speed, 0f);
} //first change of the velocity
if (transform.position.x == 0f){
rb.velocity = new Vector2(0f, 0f);
}
}//here i want to stop
.........................................................
public void MoveR()
{
rb.velocity = new Vector2(-speed, upSpeed);
}
Ответ №1:
Я не понимаю вашей логики здесь. Если вы хотите переместить объект в определенное положение, как вы просили. Существует более упрощенный способ перемещения объекта в Unity. Смотрите Документацию Unity.
public class Example : MonoBehaviour
{
public Vector3 myTarget;
private void Start()
{
StartCoroutine(MoveTo());
}
private IEnumerator MoveTo()
{
while (transform.position != myTarget)
{
transform.position = Vector3.MoveTowards(transform.position, myTarget, Time.deltaTime * 2f);
yield return null;
}
Debug.Log("We reached Target. Done!");
yield return null;
}
}
Если вы хотите, вы можете объявить myTarget как GameObject. В этом случае вам нужно будет создать пустой GameObject или выбрать тот, который уже существует.