【问题标题】:Why the cannon is never rotating facing at the target?为什么大炮从不面向目标旋转?
【发布时间】: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;
        }
    }
}

这是一个屏幕截图,显示了脚本附加到的位置以及当我与它们一起移动时,在场景视图中将目标立方体前后移动,而不是围绕大炮,大炮始终面向另一个方向:

这是在游戏运行后立即运行游戏时,炮塔自动面向另一个方向,当移动目标立方体时,炮塔将继续面向另一个方向旋转:

【问题讨论】:

标签: c# unity3d


【解决方案1】:

我认为 turretTop.forward 代表模型局部坐标的正 z 方向,但您的枪管与模型的 x 轴对齐。也许如果你更换:

Vector3 currentDir = turretTop.forward;

与:

Vector3 currentDir = turretTop.right;

【讨论】:

  • 这可能是问题所在。 turretTop.right-turretTop.right。其中一个应该可以工作
  • 将其更改为 turretTop.right 或 -turretTop.right 使其不停地旋转。
  • 它解决了“面向另一个方向的问题”吗?您可以添加任何显示当前问题的视频吗?
  • 我现在用一个简单的球体和一个像枪一样的立方体对其进行了测试在更新中:transform.LookAt(target.transform);它工作正常。我猜炮塔模型有问题。同一行代码不适用于其他模型。不确定我是否可以修复它以及我想我将如何联系作者,或者是否有办法自己修复它?
  • @DanielLip 我正在研究一个武器系统,其中一些武器需要 transform.forward,一些需要 transform.right 等等。也许根据型号单独设置它的拍摄方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多