【发布时间】:2018-04-02 22:12:05
【问题描述】:
我想要的是让大炮/炮塔面向目标自动旋转。 但是当我运行游戏并在场景视图窗口中移动目标时,大炮朝向另一个方向而不是目标。
要旋转的脚本:
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;
}
}
}
这是一个屏幕截图,显示了脚本附加到的位置以及当我与它们一起移动时,在场景视图中将目标立方体前后移动,而不是围绕大炮,大炮始终面向另一个方向:
这是在游戏运行后立即运行游戏时,炮塔自动面向另一个方向,当移动目标立方体时,炮塔将继续面向另一个方向旋转:
【问题讨论】:
-
你能播放一段视频吗?
-
不可能吗?
Vector3 targetDir = target.transform.position - turretTop.position; -
@Doh09 这是我录制的显示该行为的短视频剪辑的链接:youtube.com/watch?v=zhGgHx43W1U&feature=youtu.be