Unity肉鸽游戏中,如何让传送门平移玩家时忽略其旋转?
Unity肉鸽游戏传送门移动问题解决办法
问题根源:你使用的Transform.Translate方法默认基于玩家自身局部坐标系计算位移,一旦玩家有旋转角度,上下移动就会跟着玩家朝向偏移,而非世界坐标系的固定上下方向。
直接修改代码,给Translate添加Space.World参数,强制使用世界坐标系进行位移:
public bool cantransfer = true; private void OnCollisionEnter2D(Collision2D collision) { if (cantransfer && collision.gameObject.name == "DoorDown") { Camera.main.transform.Translate(0, -14, 0, Space.World); transform.Translate(0, -3.5f, 0, Space.World); } }
额外优化建议:
- 合并嵌套的条件判断,让代码更简洁易读。
- 尽量别用
gameObject.name判断碰撞对象,改用Tag标签(比如给门设置专属标签)或给门编写专门的Door组件,后续新增传送门时更灵活,也能避免因名称拼写错误导致的bug。
内容的提问来源于stack exchange,提问作者porglord27 yt
相关产品推荐
相关产品推荐

