Unity2D中投射物随玩家移动异常问题求助
解决2D平台跳跃游戏投射物随玩家移动的问题
问题原因
你当前的代码中,使用Instantiate(projectile, projectileSpawn)实例化投射物时,若projectileSpawn是玩家子物体“gun”的Transform,Unity会默认将新生成的投射物设为该Transform的子物体。这就导致玩家移动时,作为子物体的投射物会跟着gun一起位移,出现“射击后移动玩家,投射物位置偏移”的异常。
修复方案
修改实例化逻辑,让投射物以世界空间坐标生成,并且脱离玩家的物体层级(不设为任何物体的子物体):
void OnFire(InputValue value) { if(kopanScore.kopanNumber > 0) { // 使用世界位置与旋转实例化,同时指定父物体为null,避免跟随玩家移动 Instantiate(projectile, projectileSpawn.position, projectileSpawn.rotation, null); kopanScore.MinusKopanScore(); } else { return; } }
额外检查点
- 确认投射物的移动逻辑是基于世界空间:如果投射物脚本里用了
transform.Translate,要加上Space.World参数,比如:
避免用相对父物体的空间移动,确保投射物生成后按自身方向独立移动。transform.Translate(Vector2.right * moveSpeed * Time.deltaTime, Space.World);
内容的提问来源于stack exchange,提问作者Pascu2001
相关产品推荐
相关产品推荐

