Я пробовал это в течение двух дней без успеха. Я не могу понять, где я упускаю суть. Все ракеты движутся к положению цели, но не следуют за ней. Позиция остается фиксированной, и все вновь создаваемые ракеты приходят в эту точку вместо того, чтобы следовать за целью.
Вот код:
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. Объекты трехмерные. Вот почему я не могу использовать hardbody2D.
РЕДАКТИРОВАТЬ: Код отредактирован. Ракета следует за целью, а также указывает направление движения. Как заставить ракету совершать круговое вращение, когда ей нужно вращаться?
transform.lookAt
на ракете в 3D. насчет 2д не уверен - person Bizhan   schedule 04.06.2018(0.0, 0.0, 5.6) UnityEngine.Debug:Log(Object) HomingMissile:FixedUpdate() (at Assets/Test/HomingMissile.cs:38)
Означает ли это что-тоNullReferenceException: Object reference not set to an instance of an object HomingMissile.FixedUpdate () (at Assets/Test/HomingMissile.cs:24)
- person Joe_Vj _95   schedule 04.06.2018Vector3 direction = (target.transform.position - transform.position).normalized;
- person Joe_Vj _95   schedule 04.06.2018