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

如何实现敌方NPC抛射物直线发射?代码问题排查咨询

敌方NPC抛射物发射方向问题排查与解决

先看你的代码问题,这里确实有个小疏漏导致抛射物方向不符合预期:

你在实例化抛射物时用了Quaternion.identity作为初始旋转,接着调用rb.AddRelativeForce(transform.forward * 32f)——这里的核心矛盾是:AddRelativeForce是相对于抛射物自身局部坐标系施加力,但你的抛射物旋转是世界默认方向(Z轴朝前),而transform.forward是NPC面向玩家的世界空间方向,两个坐标系不匹配,自然会导致力的方向出错。

解决方法有两种,选其一即可:

  • 方法一:让抛射物继承NPC的旋转,使其局部forward与NPC朝向一致,再用自身局部轴向加力:
    Rigidbody rb = Instantiate(projectile, transform.position, transform.rotation).GetComponent<Rigidbody>();
    rb.AddRelativeForce(Vector3.forward * 32f, ForceMode.Impulse);
    
  • 方法二:保持抛射物旋转不变,但改用世界空间的力施加方法:
    Rigidbody rb = Instantiate(projectile, transform.position, Quaternion.identity).GetComponent<Rigidbody>();
    rb.AddForce(transform.forward * 32f, ForceMode.Impulse);
    

再说说胶囊体的问题:1x1x1的默认胶囊体完全不会影响发射方向。Unity默认胶囊体的transform.forward对应Z轴方向,LookAt(player)已经让NPC的transform正确指向玩家,模型大小不会干扰transform的朝向逻辑,只要你没修改过胶囊体模型的自身轴向,就不用担心这个问题。

内容的提问来源于stack exchange,提问作者PP Epic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:57:34