我想要的是做一些ai,大炮/炮塔将自动旋转面向目标 . 但是当我在运行游戏并在场景视图窗口中移动目标时,加农炮面向另一个方向而不是目标 .
要旋转的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotateTurret : MonoBehaviour
{
[SerializeField]
private float turnRateRadians = 2 * Mathf.PI;
[SerializeField]
private Transform turretTop; // the gun part that rotates
[SerializeField]
private Transform bulletSpawnPoint;
[SerializeField]
public GameObject target;
void Update()
{
TargetEnemy();
}
void TargetEnemy()
{
if (target != null)
{
Vector3 targetDir = target.transform.position - transform.position;
// Rotating in 2D Plane...
targetDir.y = 0.0f;
targetDir = targetDir.normalized;
Vector3 currentDir = turretTop.forward;
currentDir = Vector3.RotateTowards(currentDir, targetDir, turnRateRadians * Time.deltaTime, 1.0f);
Quaternion qDir = new Quaternion();
qDir.SetLookRotation(currentDir, Vector3.up);
turretTop.rotation = qDir;
}
}
}
这是一个屏幕截图,显示了脚本附加到的位置以及当我与它们一起移动时,在场景视图中,目标立方体前后还没有在大炮周围,大炮始终面向另一个方向:
这就是在游戏运行后立即运行游戏时,炮塔自动朝向另一个方向,当移动目标时,炮塔将继续朝向另一个方向旋转:
1 回答
我认为turretTop.forward表示模型的局部坐标的正z度,但是你的桶被分配到模型的x轴 . 也许你换了:
Vector3 currentDir = turretTop.forward;
有: