Unity 2D-光线的方向不正确

时间:2018-12-29 13:37:04

标签: unity3d 2d raycasting

我有一个游戏对象,应该向多个方向发射光束。我想使其尽可能地灵活,所以我添加了几个目标,脚本会绘制这些光线(从游戏对象到目标)。我已经使用了目标变换的位置变量,但这只是使所有光线朝着一个奇怪的方向偏离,但是当我四处走动时并没有改变。然后,我尝试了目标的局部位置,但是这导致所有光线朝其原始方向行进,而没有考虑旋转的变化。

这是激光脚本的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Laser : MonoBehaviour {
    private LineRenderer Linerenderer;
    public List<Transform> rays;

    void Start()
    {
        Physics2D.queriesStartInColliders = false;
    }
    void Update () {

        foreach (Transform tran in rays)
        {
            RaycastHit2D hit = Physics2D.Raycast(transform.position, tran.position,20);
            Debug.DrawLine(transform.position, hit.point);
        }
    }
}

屏幕截图:

-Using world positions:

-Using local positions:

2 个答案:

答案 0 :(得分:0)

您指定的Physics2D.Raycast()方法的第二个参数是错误的:它不应该是空间位置,而应该是方向Debug.DrawRay()方法的第二个参数是也是方向,而不是空间点

尝试以下操作:

void Update () {

    foreach (Transform tran in rays)
    {
        Vector2 direction = (tran.position - transform.position).normalized;
        RaycastHit2D hit = Physics2D.Raycast(transform.position, direction, 20);

        Vector2 rayDirection = hit.point - transform.position;
        Debug.DrawRay(transform.position, rayDirection);
    }
}

答案 1 :(得分:0)

谢谢,经过一番混乱,我终于能够使它正常工作。 如果有人需要类似的帮助(动态射线投射)。 这是最终代码(您可能需要稍作修改):

Martha! 1

Please! 1

Stop!   1

Why     2

did     2

name?   2

**say     1**

that    2

you     2