You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:48:19