为什么大炮永远不会朝向目标旋转?

时间:2018-04-02 22:12:06

标签: c# unity3d

我想要的是做一些ai,大炮/炮塔会自动朝向目标旋转。 但是当我在场景视窗中运行游戏并移动目标时,大炮面向另一个方向,而不是目标。

要旋转的脚本:

private async void btnSort_Click(object sender, EventArgs e)
{
    lblStatusUpdate.Text = @"Sorting...";
    await Run();

}


public async Task Run()
{
    //This line runs asynchronously and keeps the UI responsive.
    await bubbleSort(iArray);

    //The remaining code runs on the UI thread
    foreach (int item in iArray)
    {
        lbxNumbers.Items.Add(item);
    }
}


public async Task bubbleSort(int[] iArray)
{
    await Task.Run(() =>
    {
        bool isSorted = false;
        while (!isSorted)
        {
            isSorted = true; //You were missing this to break out of the loop.
            for (int i = 0; i < iArray.Length - 1; i++)
            {
                if (iArray[i] > iArray[i + 1])
                {
                    swap(iArray, i, i + 1);
                    isSorted = false;

                }

            }
        }

    });
}

这是一个屏幕截图,显示脚本所附着的位置,以及当我在场景视图中移动它们时,目标立方体前后还没有在大炮周围,大炮总是面向另一个方向:

Turret

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

Turret

1 个答案:

答案 0 :(得分:3)

我认为turretTop.forward表示模型的局部坐标的正z度,但是你的桶被分配到模型的x轴。也许你换了:

Vector3 currentDir = turretTop.forward;

使用:

Vector3 currentDir = turretTop.right;