Raycast仅能从左侧命中胶囊碰撞体问题求助
问题描述
我希望从玩家位置向仅带有Capsule Collider的胶囊对象位置发射Raycast,但不知为何该射线仅能从左侧命中目标。相关代码如下:
RaycastHit2D _ray = Physics2D.Raycast(transform.position, collision.transform.position, 100f, playerL);

我确认Layer设置全部正确,因为射线从左侧可以正常命中,目前不知道该如何解决这个问题。
问题根源
Physics2D.Raycast的第二个参数要求传入方向向量,但你现在直接传了目标的世界位置。这种情况下,只有当目标在左侧时,这个错误的“方向”碰巧能覆盖到目标,其他方向自然无法命中。
修复方案
把第二个参数改成目标位置减去玩家位置,得到真正指向目标的方向向量:
// 计算从玩家到目标的方向向量 Vector2 direction = collision.transform.position - transform.position; RaycastHit2D _ray = Physics2D.Raycast(transform.position, direction, 100f, playerL);
如果担心方向向量的长度影响射线检测(比如目标离得远时方向向量过长),可以先归一化:
Vector2 direction = (collision.transform.position - transform.position).normalized; RaycastHit2D _ray = Physics2D.Raycast(transform.position, direction, 100f, playerL);
修改后射线就能准确指向目标,不管目标在哪个方向都能正常命中。
内容的提问来源于stack exchange,提问作者user21182433
相关产品推荐
相关产品推荐

