unity3d - 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);
}
}
}
调试日志始终显示正确的位置,但正如您在视频中看到的那样,位置发生了变化。
谁能指出正确的方法来做到这一点?
解决方案
问题是连接到我的播放器的角色控制器。由于某些奇怪的原因,当我更改播放器 transform.position 时,角色控制器不会更改它自己的 transform.position。
因此解决方案是在更改玩家位置之前禁用角色控制器并在更改后启用它。
推荐阅读
- c# - If-else 构造失败(.NET Framework)
- python - 使用 Selenium 删除 PopUp
- flutter - 下拉值不能设置为空
- c# - 在另一台计算机上将 C# 应用程序与 Mysql 数据库一起使用
- amazon-s3 - 使用 AWS CLI 导入 VM 映像
- azure-active-directory - 如何使用 Active Directory 身份验证通过 URL 访问 Azure Blob?
- java - eclipse java中的opencv
- angularjs - AngularJS:ng-model 指令
- reactjs - React styled-components - 类型 'StyledComponent<"label", any, {}, never>' 不可分配给类型 'never'
- javascript - 我如何在我的反应引导表中添加新行