繁体   English   中英

Unity 2D光线投射未按预期进行

[英]Unity 2D raycasting not going where expected

我有一个玩家和一个目标方向(表示为归一化Vector2,例如(1.0,0)表示指向右边)。 我想朝目标方向投射玩家的光线,直到它碰到我的墙层的一部分。 我不确定为什么,但是现在,如Debug.DrawRay所描绘的那样,光线投射根本没有朝着正确的方向瞄准。 这是我的相关代码:

 private void Update() {
     SetAimDirection();
     DoRaycast();
 }
 private void DoRaycast() {
     if (Input.GetButtonDown("Cast")) {
         RaycastHit2D hit = Physics2D.Raycast(transform.position, aimDirection, groundLayer);
         if (hit.collider != null) {
             Debug.Log(hit.collider.tag + " " + hit.point + " aim: " + aimDirection);
             Debug.DrawRay(transform.position, hit.point);
         }
     }
 }

private void SetAimDirection() {
    Vector2 aim = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));

    if (aim.magnitude == 0) {
        aim.x = facingRight ? 1 : -1;
    }

    aimDirection = aim.normalized;

    // Draw the reticle a constant radius from the player in aimDirection.
    Vector2 reticlePosition = new Vector2(body.position.x + (aimDirection.x * reticleRadius), body.position.y + (aimDirection.y * reticleRadius));
    crosshair.transform.position = new Vector3(reticlePosition.x, reticlePosition.y, 0);
  }

这是一个gif图像,可以更好地说明问题(白色光线是从玩家中心穿过红色十字准线,但不是):

在此处输入图片说明

因此,这是我自己的调试功能的错误; 我正在使用Debug.DrawRay而不是Debug.DrawLine 区别在于, DrawRay具有起点和方向,而我给它指定了起点和终点,从而完全弄乱了结果。 使用DrawLine解决了我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM