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

Unity手榴弹投掷方向与相机指向不一致问题求助

解决手榴弹投掷方向与相机指向不一致的问题

针对你遇到的相机向下倾斜时,手榴弹无法沿相机正前方飞出的问题,可通过以下调整修复:

核心修改点

  1. 匹配手榴弹生成时的旋转:之前用Quaternion.identity会重置手榴弹的旋转,若碰撞体非完全对称(比如胶囊体),刚生成时易和玩家碰撞体产生异常物理交互,导致方向偏离。将生成旋转改为相机的旋转,让碰撞体方向与投掷方向一致。
  2. 偏移生成位置:直接在相机位置生成手榴弹,可能会和玩家自身碰撞体重叠,刚生成就被弹开。将生成位置向前偏移一点,避免碰撞干扰。

修改后的代码

private void Yeet()
{
    // 向前偏移一点生成,避免与玩家/相机碰撞体重叠
    Vector3 spawnPosition = FPSCamera.transform.position + FPSCamera.transform.forward * 0.1f;
    // 生成时匹配相机的旋转
    GameObject grenade = Instantiate(wm_equipment, spawnPosition, FPSCamera.transform.rotation);
    
    grenade.GetComponent<Grenade>().delay = delay;
    Rigidbody rb = grenade.GetComponent<Rigidbody>();

    Vector3 throwDirection = FPSCamera.transform.forward;
    rb.AddForce(throwDirection * throwForce, ForceMode.VelocityChange);
}

额外检查项

  • 确认手榴弹的Rigidbody未勾选IsKinematic,否则AddForce不会生效;
  • 若问题仍存在,可适当调高throwForce数值,抵消初始碰撞的微弱影响。

内容的提问来源于stack exchange,提问作者0ut_0f_Context

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:42:05