角色挂载踢球脚本异常:仅旋转全为0时可触发踢球功能
问题解决:角色旋转后无法正确朝向踢球
修改后的代码
if (Input.GetKey(KeyCode.Space)) { // 直接取角色自身的前方向作为踢球方向 Vector3 kickDirection = transform.forward; kickDirection = kickDirection.normalized; Debug.Log(kickDirection); carryingBallplayer = false; rbb.AddForce(kickDirection * kickForceplayer, ForceMode.Impulse); }
问题原因与说明
你之前的代码通过playerfrount.position - playerback.position计算踢球方向,这个逻辑存在明显问题:
- 如果
playerfrount和playerback是场景中固定位置的独立对象,它们的位置差不会随角色旋转变化,只有角色处于初始旋转状态(xyz轴全0)时,这个方向才会匹配角色朝向。 - 即便这两个对象是角色的子物体,直接使用
transform.forward也更简洁可靠——transform.forward本身就是角色自身坐标系下的前方向,会实时跟随角色的旋转自动更新,完全符合你“朝向哪就踢向哪”的需求。
如果一定要保留双点计算的逻辑,必须确保这两个对象是角色对象的子节点,且计算时保持相对角色的位置不变,但显然transform.forward是最优的解决方案。
内容的提问来源于stack exchange,提问作者shohel hossain
相关产品推荐
相关产品推荐

