我在游戏运行后产卵我的动物。当我把导航网格代理添加到我的动物预制件时,它变成了旧的位置。
下面是我的代码:
public class GeneralScript : MonoBehaviour
{
public GameObject Deer;
private int deernum1 = 0
private int num;
private bool cond1 = true;
private bool cond2 = true;
void Start()
{
StartCoroutine(spawnanimalsatposition1());
}
IEnumerator spawnanimalsatposition1()
{
yield return new WaitForSeconds(3f);
while (cond1)
{
Vector3 position1 = new Vector3(Random.Range(300,495), 1, Random.Range(5, 495));
position1.y = Terrain.activeTerrain.SampleHeight(position1) +
Terrain.activeTerrain.GetPosition().y;
position1.y += 1.2f;
Instantiate(Deer, position1, Quaternion.Euler(-90, 0, 0));
deernum1++;
if (deernum1 > 6)
{
cond1 = false;
}
}
}
1条答案
按热度按时间uqcuzwp81#
在“正常”情况下,使用
Z-axis
而不是首选的Y-axis
作为对象的向上旋转。当你示例化你的预制件时,你也应用了一个欧拉角偏移
(-90,0,0)
。这是在x-axis
上偏移你的Transform
-90
度。为了解决这个问题,你可以将欧拉角设置为
(0,0,0)
,或者更好的是使用Quaternion.identity
使对象与世界坐标轴对齐。我假设NavMesh
正在尝试归一化这个偏移,所以理想情况下你应该旋转你的动物,使z-axis
(蓝色)“向前”或脸,而y-axis
(绿色)向上