我想要的是做一些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;
}
}
}
});
}
这是一个屏幕截图,显示脚本所附着的位置,以及当我在场景视图中移动它们时,目标立方体前后还没有在大炮周围,大炮总是面向另一个方向:
这就是在游戏运行后立即运行游戏时,炮塔自动朝向另一个方向,当移动目标时,炮塔将继续朝着另一个方向旋转:
答案 0 :(得分:3)
我认为turretTop.forward表示模型的局部坐标的正z度,但是你的桶被分配到模型的x轴。也许你换了:
Vector3 currentDir = turretTop.forward; 击>
使用:
Vector3 currentDir = turretTop.right;