Unity手榴弹投掷方向与相机指向不一致问题求助
解决手榴弹投掷方向与相机指向不一致的问题
针对你遇到的相机向下倾斜时,手榴弹无法沿相机正前方飞出的问题,可通过以下调整修复:
核心修改点
- 匹配手榴弹生成时的旋转:之前用
Quaternion.identity会重置手榴弹的旋转,若碰撞体非完全对称(比如胶囊体),刚生成时易和玩家碰撞体产生异常物理交互,导致方向偏离。将生成旋转改为相机的旋转,让碰撞体方向与投掷方向一致。 - 偏移生成位置:直接在相机位置生成手榴弹,可能会和玩家自身碰撞体重叠,刚生成就被弹开。将生成位置向前偏移一点,避免碰撞干扰。
修改后的代码
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
相关产品推荐
相关产品推荐

