首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用光线投射从一个物体发出多个激光束

使用光线投射从一个物体发出多个激光束
EN

Stack Overflow用户
提问于 2019-01-15 14:34:07
回答 1查看 67关注 0票数 0

我有一个物体,我想要多个激光束,而不是只有一个。

下面的代码仅显示线束的一侧。但从各方面来看,这都是意料之中的。

代码语言:javascript
复制
using UnityEngine;
using System.Collections;

public class Laser : MonoBehaviour
{

    private LineRenderer lr;
    private bool clicked = false;
    RaycastHit rh;

    // Use this for initialization
    void Start()
    {
        lr = GetComponent<LineRenderer>();

    }




    // Update is called once per frame
    void Update()
    {


        if (clicked)
        {

            lr.SetPosition(0, transform.position + new Vector3(0, 0, 0));
            RaycastHit hit;

            if (Physics.Raycast(transform.position + new Vector3(0, 0, 0), -transform.up, out hit))
            {
                if (hit.collider)
                {
                    lr.SetPosition(1, hit.point);
                }
            }
            else lr.SetPosition(1, -transform.up * 5000);


            if (Physics.Raycast(transform.position + new Vector3(0, 0, 0), transform.up, out hit))
            {
                if (hit.collider)
                {
                    lr.SetPosition(1, hit.point);
                }
            }
            else lr.SetPosition(1, transform.up * 5000);

           if (Physics.Raycast(transform.position + new Vector3(0, 0, 0), transform.right, out hit))
            {
                if (hit.collider)
                {
                    lr.SetPosition(1, hit.point);
                }
            }
            else lr.SetPosition(1, transform.right * 5000);

           if (Physics.Raycast(transform.position + new Vector3(0, 0, 0), -transform.right, out hit))
            {
                if (hit.collider)
                {
                    lr.SetPosition(1, hit.point);
                }
            }
            else lr.SetPosition(1, -transform.right * 5000);


        }

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-15 14:58:11

代码语言:javascript
复制
public LineRenderer lr_up;
public LineRenderer lr_down;
public LineRenderer lr_left;
public LineRenderer lr_right;

private bool clicked = false;

RaycastHit rh;

// Use this for initialization
void Start()
{

}

// Update is called once per frame
void Update()
{
    if (clicked)
    {
        lr_up.SetPosition(0, transform.position);
        lr_down.SetPosition(0, transform.position);
        lr_left.SetPosition(0, transform.position);
        lr_right.SetPosition(0, transform.position);

        RaycastHit hit;

        if (Physics.Raycast(transform.position, -transform.up, out hit))
        {
            if (hit.collider)
            {
                lr_up.SetPosition(1, hit.point);
            }
        }
        else lr_up.SetPosition(1, -transform.up * 5000);


        if (Physics.Raycast(transform.position, transform.up, out hit))
        {
            if (hit.collider)
            {
                lr_down.SetPosition(1, hit.point);
            }
        }
        else lr_down.SetPosition(1, transform.up * 5000);

        if (Physics.Raycast(transform.position, transform.right, out hit))
        {
            if (hit.collider)
            {
                lr_left.SetPosition(1, hit.point);
            }
        }
        else lr_left.SetPosition(1, transform.right * 5000);

        if (Physics.Raycast(transform.position, -transform.right, out hit))
        {
            if (hit.collider)
            {
                lr_right.SetPosition(1, hit.point);
            }
        }
        else lr_right.SetPosition(1, -transform.right * 5000);
    }
}

这是您更正后的代码。您将需要四个线渲染器来表示四个梁。您不能有一个线渲染器,并期望它在四个方向上拍摄。在当前对象中创建四个空子对象。分配线渲染器组件&在脚本中为它们分配各自的线渲染器。代码的其余部分将负责设置光束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54193788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档