Я пробовал это в течение двух дней безуспешно.Я не могу понять, где я упускаю суть.Все ракеты движутся к цели, но не следуют за ней.Положение остается неизменным, и все вновь созданные ракеты приходят к этой точке, а не следуют за целью.
Вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HomingMissile : MonoBehaviour
{
private GameObject target; //changed to private
private Rigidbody rb;
public float rotationSpeed;
public float speed;
Quaternion rotateToTarget;
Vector3 direction;
private void Start()
{
target = GameObject.FindGameObjectWithTag("Player"); //uncommented this
rb = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
//made some modifications
Vector3 direction = (target.transform.position - transform.position).normalized;
float angle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg;//interchanged x and z
Quaternion rotateToTarget = Quaternion.Euler(0, angle, 0);
transform.rotation = Quaternion.Slerp(transform.rotation, rotateToTarget, Time.deltaTime * rotationSpeed);
Vector3 deltaPosition = speed * direction * Time.deltaTime;
rb.MovePosition(transform.position + deltaPosition);
}
}
Я выбрал цель (преобразование) с помощью инспектора,Я использую Unity и C #, очевидно, вы это знаете.
Я пытаюсь добиться того, чтобы ракета следовала за положением цели в реальном времени.И я могу сам добавить код уничтожения ракеты. Примечание: Пожалуйста, не отмечайте это как дубликат.Это не.Игра 2D, где Y всегда постоянен.Вертикальная ось X и Горизонтальная ось X. Объекты 3D.Вот почему я не могу использовать hardbody2D.
РЕДАКТИРОВАТЬ: Код отредактирован.Ракета следует за целью, а также указывает на направление движения.Как заставить ракету вращаться по кругу, когда она должна вращаться?