Unity -加载场景后设置玩家位置



我正在尝试在加载场景后设置播放器位置。程序有时运行正常,但有时它会把玩家放在错误的位置。

这是一个展示这种奇怪行为的视频:https://youtu.be/MFl9P3taV0Y

这是代码:

public class IniciaHeroi : MonoBehaviour
{
public GameObject GM;
private int startPosition;
void Awake()
{
startPosition = GM.GetComponent<StartScene>().startPosition;
if(startPosition == 1)
{
transform.position = new Vector3(119,4.67f,36);
transform.GetComponent<HeroiMovimento>().rot = -30;
Debug.Log("StartPosition1: " + transform.position);
}
if(startPosition == 2)
{
transform.position = new Vector3(49,13.8f,167);
transform.GetComponent<HeroiMovimento>().rot = 100;
Debug.Log("StartPosition2: " + transform.position);
} 
}
}

调试日志总是显示正确的位置,但是,正如你在视频中看到的,某些东西改变了位置。

有人能指出正确的方法吗?

问题是角色控制器连接到我的播放器。由于一些奇怪的原因,字符控制器不改变自己的转换。当我改变玩家转换时的位置。

所以解决方案是在改变玩家位置之前禁用角色控制器,并在改变后启用它。

谢谢!有同样的问题,我花了很长时间才找到这个。最后,我能够通过使用禁用控制器,然后启用它来解决:

的例子:

gameObject.GetComponent<CharacterController>().enabled = false;
gameObject.transform.position = new Vector3(-31, 1, -10);
gameObject.GetComponent<CharacterController>().enabled = true;

最新更新