Plug-in Unity ray (Ray) et LineRenderer, l'affichage et la disparition des lignes de rayons

montrer le rayon

1. Le composant LineRenderer doit être ajouté

2. Récupérez le composant LineRenderer dans le code, sinon une erreur sera signalée

3. Le point de départ et le point final du rayon doivent être clairs, sinon il y aura de gros problèmes avec la position de l'affichage du rayon. Par exemple, dans les jeux de tir, la position de départ doit être au niveau de la bouche du pistolet. il suffit de donner un objet vide au museau. Pour le parcourir, il suffit de mettre la position de départ du rayon sur l'objet vide. Concernant la question de la direction, vous pouvez la déterminer en fonction de vos propres besoins. Généralement, c'est dans la direction de l'axe z des coordonnées mondiales, qui est la position avant.

4. Remarque : assurez-vous de clarifier les coordonnées tridimensionnelles de l'objet vide, et l'objet vide lui-même changera l'orientation de l'objet vide en raison de certaines animations. Sinon, la position du rayon peut être considérablement déviée, provoquant le rayon à déplacer.

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);//销毁被击中的对象
                       
                }                
            }
        }
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/m0_71624363/article/details/129150189
conseillé
Classement