设置播放器 go.transform.position 不改变位置
Posted
技术标签:
【中文标题】设置播放器 go.transform.position 不改变位置【英文标题】:setting player go.transform.position not changing position 【发布时间】:2021-03-10 04:58:43 【问题描述】:尝试在关卡开始时将玩家对象移动到游戏每个关卡中内置的起始位置,但对象不会重新定位。玩家不是另一个人的孩子,所以我在这里使用根变换。
//move player to start position (I know find is expensive)
startPosition_GO = GameObject.Find("StartPosition");
playerGO.transform.position = startPosition_GO.transform.position;
//and just to be because
playerGO.transform.position = new Vector3(startPosition_GO.transform.position.x, startPosition_GO.transform.position.y, startPosition_GO.transform.position.z);
玩家对象停留在原来的位置并且不会移动。
包括两张图片,第一张在开始关卡之前你可以看到游戏对象的起始位置(粉色方块)。上面的代码在级别开始时调用。第二张图片显示了播放器在代码执行后的位置(上面带有箭头导航图标。
【问题讨论】:
关于堆栈溢出的调试问题需要minimal reproducible example 成为主题。请参阅How to Ask 了解更多信息。您的问题似乎很熟悉,所以我将猜测原因。 Does this help? 【参考方案1】:试试这个代码来移动玩家的位置。
startPosition_GO = GameObject.Find("StartPosition");
playerGO.transform.position = startPosition_GO.transform.position;
【讨论】:
谢谢。这就是我所拥有的,并且由于某种原因它没有重新定位。我正在添加一个场景,并想知道这是否与这种奇怪的影响有关。我可能只需要在该位置实例化播放器对象而不是移动它。【参考方案2】:设置一次位置。你可以删除这个
playerGO.transform.position = new Vector3(startPosition_GO.transform.position.x, startPosition_GO.transform.position.y, startPosition_GO.transform.position.z);
或者这个,它应该可以工作。
playerGO.transform.position = startPosition_GO.transform.position;
代码似乎是多余的,可能会导致问题。
【讨论】:
是的,我知道它是多余的。我应该知道不要在我的帖子中包含它,但这是为了证明两者都应该有效,但它们不是。真的无法弄清楚为什么这不起作用。它并不复杂。这是一个标准的定位。我能想到的只是一些东西是空的,但没有抛出任何错误。以上是关于设置播放器 go.transform.position 不改变位置的主要内容,如果未能解决你的问题,请参考以下文章