我一直在YouTube上關於如何製作塔防遊戲(https://www.youtube.com/watch?v=beuoNuK2tbk)的教程,並且在其中的一集中,他教你如何讓敵人遵循預先制定的路線。這工作得很好,但我想讓我的敵人旋轉,讓它朝着它的方向前進。我嘗試使用他在後面的視頻中顯示的一些代碼(https://www.youtube.com/watch?v=QKhn2kl9_8I),但由於我不斷收到錯誤,所以我無法工作,所以我搜索了一下,得到了我認爲是一種解決方案。我不知道如何修正這個代碼,如果你們中的任何人都可以提供幫助,將不勝感激。如果有幫助,我在3D項目上使用Unity。這是我一直收到的錯誤「嚴重代碼描述項目文件行抑制狀態 錯誤CS1503參數2:無法從'UnityEngine.Transform'轉換爲'UnityEngine.Quaternion'Tower Defence.CSharp C:\ Users \ Owner \ Documents \ Tower Defense \ Assets \ Enemy.cs 27 Active「如何讓我的敵人旋轉以面對Unity中的一個航點?
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour {
public float speed = 10f;
public float smooth = 2f;
private Transform target;
private int wavepointIndex = 0;
private Object waypoint;
void Start()
{
target = Waypoints.points[0];
InvokeRepeating("nextWaypoint", 0f, 0.5f);
}
void Update()
{
Vector3 dir = target.position - transform.position;
transform.Translate(dir.normalized * speed * Time.deltaTime, Space.World);
transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * smooth);
if (Vector3.Distance(transform.position, target.position) <= 0.4f)
{
GetNextWaypoint();
}
}
void GetNextWaypoint()
{
if(wavepointIndex >= Waypoints.points.Length - 1)
{
Destroy(gameObject);
return;
}
wavepointIndex++;
target = Waypoints.points[wavepointIndex];
}
}
與消除錯誤完美。有沒有可能幫助我讓敵人面對下一個航點?我錄製了一段視頻,你可以看到我的意思。視頻:https://www.youtube.com/watch?v = b5baqnWLcys –
@StephenMynes我只是來解決你的錯誤。 ** REPLACE **'transform.rotation = Quaternion.Slep(transform.rotation,target.rotation,Time.deltaTime * smooth);''帶''transform.LookAt(target);'。這應該解決旋轉問題。 – Programmer
太完美了!非常感謝! –