首页 > 解决方案 > 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);
    } 
  }
}

调试日志始终显示正确的位置,但正如您在视频中看到的那样,位置发生了变化。

谁能指出正确的方法来做到这一点?

标签: unity3dpositionloadscene

解决方案


问题是连接到我的播放器的角色控制器。由于某些奇怪的原因,当我更改播放器 transform.position 时,角色控制器不会更改它自己的 transform.position。

因此解决方案是在更改玩家位置之前禁用角色控制器并在更改后启用它。


推荐阅读