为了账号安全,请及时绑定邮箱和手机立即绑定

Raycast没有击中任何东西

Raycast没有击中任何东西

Go
海绵宝宝撒 2022-10-15 14:42:19
光线投射甚至没有给出Debug.Log("it hit something时间,Debug.DrawRay它确实在敌人和玩家之间划清界限。使用以下脚本的敌人位于“Ignore Raycast”层,它试图击中的玩家位于“Default”层。void FixedUpdate() {    RaycastHit hit;    Vector2 diff = PlayerMovement.playerTransform.position - transform.position;    Ray raycastToPlayer = new Ray(transform.position, diff);    Debug.Log(raycastToPlayer);    Debug.DrawRay(transform.position, diff, Color.white, 0.01f, true);    if (Physics.Raycast(raycastToPlayer, out hit)) {        Debug.Log("it hit something");        if (hit.collider != null) {            Debug.Log(hit.collider.gameObject.name);            if (hit.transform.tag == "Player"){                float rotZ = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;                transform.rotation = Quaternion.Euler(0f, 0f, rotZ);            }        }    }}
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

你正在使用Vector2位置,所以我假设你的游戏是 2D 的。如果是这样,我相信您需要使用Physics类的 2D 版本(请参阅此处):

void FixedUpdate() {


    Vector2 diff = (PlayerMovement.playerTransform.position - transform.position).Normalized;

    RaycastHit2D hit = Physics2D.Raycast(transform.position, diff);


    Debug.DrawRay(transform.position, diff, Color.white, 0.01f, true);


    if (hit.collider != null) {

        Debug.Log("Raycast hit: " + hit.collider.gameObject.name);

        if (hit.transform.tag == "Player") {

            float rotZ = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;

            transform.rotation = Quaternion.Euler(0f, 0f, rotZ);

        }

    }

}


查看完整回答
反对 回复 2022-10-15
?
茅侃侃

TA贡献1842条经验 获得超21个赞

对于您正在使用的 Ray 构造函数,方向应该是 Vector3:

https://docs.unity3d.com/ScriptReference/Ray.html

但是在您的代码中,您传递的是 Vector2。如果是 2D 游戏,您应该使用不同的构造函数:

https://docs.unity3d.com/ScriptReference/Ray2D-ctor.html

除此之外,正如他们已经在评论中指出的那样,您需要在 Physics.Raycast 中传递 Ray 的 maxDistance 参数:

  • ray 射线 的起点和方向。

  • hitInfo 如果返回 true,hitInfo 将包含有关碰撞器被击中位置的更多信息。(另见:RaycastHit)。

  • maxDistance 光线应检查碰撞的最大距离。

如果要使用图层,则需要一个额外的参数:

  • layerMask 一个图层蒙版,用于在投射光线时选择性地忽略碰撞器。

https://docs.unity3d.com/ScriptReference/Physics.Raycast.html


查看完整回答
反对 回复 2022-10-15
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信