Unity射线(Ray)与LineRenderer插件,射线的线条的显示与消失

显示射线

1、必须添加组件LineRenderer

2、在代码里面获取LineRenderer组件,不然报错

3、对于射线的起点与终点位置需要明确,要不然射线显示的位置会出现很大问题.例如在射击类游戏,起始位置都应该在枪口的位置,只需要在枪口给一个空物体去过度一下,把射线的起始位置放在空物体上就可以了。对于方向问题,根据自己的需求判定,一般情况是在世界坐标的z轴方向也就是forward前方位置。

4、注:一定要明确空物体的三维坐标,以及空物体自身会因为某些动画改变空物体的方位,不然射线的位置可能会有很大的偏差,导致射线偏移。

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEditor;
using UnityEngine;

public class Players : MonoBehaviour
{
    private LineRenderer line;//线的定义
    public Transform buttle; //射线的起点位置(空物体的位置)
    
    void Start()
    {
         
    line = GetComponent<LineRenderer>();//添加组件
    }

    void Update()
    {
        Fire();
    }
     void Fire()//玩家开火
    {
        if (Input.GetButtonDown(0))
        {
            
           //射线的定义 Ray(射线的开始位置,射线的方向)
            Ray ray = new Ray(buttle.position, transform.forward);

            RaycastHit hit;//被击中位置的点位定义

            line.SetPosition(0, buttle.position);//线的开始位置

            bool b = Physics.Raycast(ray, out hit);//判定射线是否击中目标
            if (b==true)
            {
                line.SetPosition(1, hit.point);//线的最终位置,hit.point被击中的位置

                line.enabled = true; //射线的显示
                //line.enabled = false;//射线的消失      
        
                if (hit.collider.CompareTag("Enemy"))//被击中的目标Tag值
                {
                    Destroy(hit.collider.gameObject,0.1f);//销毁被击中的对象
                       
                }                
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/m0_71624363/article/details/129150189