Unity 3.3.0中如何使两个游戏对象同步移动?
解决玩家与投影同步移动的问题
针对你遇到的玩家碰撞墙体停止后投影脱离、同尺寸碰撞盒导致卡顿的问题,给你几个适合新手的解决方案:
方案一:父物体绑定(零代码/极简操作)
- 将投影对象直接拖到玩家对象的层级下,设为玩家的子物体。这样投影会自动继承玩家的位置、旋转等变换,完全同步移动。
- 调整投影的局部位置(在Inspector的Transform面板修改Position的X/Y/Z),确保初始位置符合需求。
- 关键设置:给投影的Collider组件勾选
Is Trigger,这样它不会产生物理碰撞,只会触发触发事件(不需要触发事件的话可以直接禁用Collider),彻底避免和玩家、墙体碰撞导致的卡顿或脱离问题。
方案二:代码同步位置(灵活可控)
如果需要投影保留独立层级但保持同步,写一个简单的C#脚本挂在投影上:
using UnityEngine; public class FollowPlayer : MonoBehaviour { // 在Unity编辑器里把玩家对象拖拽到这个字段里 public Transform player; // 可自定义投影相对玩家的偏移量 public Vector2 offset; void Update() { // 每一帧同步玩家位置,加上偏移量 transform.position = (Vector3)player.position + offset; // 若需要同步旋转,取消下面注释 // transform.rotation = player.rotation; } }
- 同样给投影的Collider勾选
Is Trigger,避免物理冲突。
方案三:2D关节组件(适合物理交互场景)
如果需要投影有物理特性但保持和玩家连接:
- 给玩家和投影分别添加
FixedJoint2D组件。 - 在投影的
FixedJoint2D面板里,把Connected Rigidbody设为玩家的Rigidbody2D。 - 取消勾选
Enable Collision,让两者不会互相碰撞;调整Break Force到较大值,防止碰撞时关节断开。
额外注意事项
- Unity 3.3.0版本较老,但上述都是基础功能,完全兼容。
- 若不需要投影参与任何碰撞检测,直接禁用它的Collider组件也是可行的。
内容的提问来源于stack exchange,提问作者Latimas
相关产品推荐
相关产品推荐

