让一个Linecast通过一个点,但继续向前无限

时间:2016-09-24 03:59:21

标签: unity3d vector raycasting

我在Unity 2D中遇到线播问题。我要做的是从播放器,屏幕上的光标,然后无限期(或很长一段时间,比如说10次)进行直播。我已成功尝试从玩家那里获得Debug.Drawline传球并停在鼠标位置。它看起来像这样:

enter image description here

请注意我的光标位于该块的左上角。下面是我用来完成此任务的代码:

    mousePos = Camera.main.ScreenToWorldPoint (new Vector2 (Input.mousePosition.x, Input.mousePosition.y));
    Debug.DrawLine(new Vector2 (player.transform.position.x, player.transform.position.y+32), new Vector2 (mousePos.x, mousePos.y), Color.green);

请注意,+ 32用于将画线中心设置为我的特征。但是,如果我将mousePos向量乘以2,我会在drawcast(以及linecast)中获得此偏移量。

enter image description here

我的光标再次位于块的左上角。为什么这种偏移表现得如此奇怪?

2 个答案:

答案 0 :(得分:1)

Linecast意味着从一个点到另一个点。你似乎描述了从一个方向的一个点开始的光线投射。

因此,在您的情况下,您将从播放器的方向指向鼠标指针,将其标准化并使用无穷远作为距离。

答案 1 :(得分:0)

不知道你想要达到什么目标,但正如已经指出的那样,我认为你应该使用raycast。例如:

var mousePos = Camera.main.ScreenToWorldPoint((Vector2)Input.mousePosition);
var playerPos = (Vector2)player.transform.position;
var direction = (playerPos - mousePos).normalized;
Debug.DrawRay(new Vector2(playerPos.x, playerPos.y + 32), direction, Color.green);