我知道这是个菜鸟问题,但无论如何,只有一种学习方法。我在 Unity 中创建了一个空的 GameObject,附加了一个应该移动立方体(我的玩家)的脚本,并给我的立方体贴上了“玩家”标签。创建立方体后,我希望能够移动立方体而不必将脚本放在立方体本身上。当脚本在立方体上时,它可以毫无问题地移动(我知道这可能应该这样做,但是为了尝试学习新事物,我想这样做)。在无法通过谷歌找到答案后,非常感谢任何见解!谢谢更新!这是现在作为文本的代码,因为它被要求。 public class GameCoreController : MonoBehaviour { private GameObject PlayerMove; public Rigidbody rb; void Start () { PlayerMove = GameObject.FindGameObjectWithTag("Player"); rb = GetComponent<Rigidbody>(); } void Update() { // character movement if (Input.GetKey(KeyCode.W)) { PlayerMove.transform.Translate(0, 0, 0.25f); } if (Input.GetKey(KeyCode.S)) { PlayerMove.transform.Translate(0, 0, -0.25f); } if (Input.GetKey(KeyCode.A)) { PlayerMove.transform.Translate(-0.25f, 0, 0); } if (Input.GetKey(KeyCode.D)) { PlayerMove.transform.Translate(0.25f, 0, -0); } }我已经更新了之前的代码以包含PlayerMove.transform.Translate但我仍然遇到与立方体音符移动相同的问题。我还包含了我的场景的截图,包括立方体和 GameCoreController;包含应该控制立方体的脚本的空游戏对象。再次感谢各位大侠的帮助。更新2!删除立方体并将其重新插入场景后,它现在会移动。谢谢大家的帮助。
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
立方体不会移动的原因是在您的代码中您没有移动它,transform
而是移动了transform
您将此脚本附加到的游戏对象的 。
transform.Translate
移动此脚本附加到的游戏对象的变换。所以如果你想移动立方体,你需要做的就是改变 from transform.Translate
to PlayerMove.transform.Translate
which 将移动游戏对象的变换,PlayerMove
它是你的立方体,上面有“玩家”标签
千万里不及你
TA贡献1784条经验 获得超9个赞
^ 以上都是。另外,在屏幕截图中,您的刚体未设置为“运动学”。这意味着物理仍然会应用于它(如重力)。经验法则:如果你有一个移动物体,碰撞很重要,它需要一个刚体和一个碰撞器。如果对象不是通过物理命令(例如,刚体.AddForce())移动,而是按原样操作变换,请将刚体“isKinomatic”属性设置为 true。
- 2 回答
- 0 关注
- 181 浏览
添加回答
举报
0/150
提交
取消