Unity 游戏中的红外线,射线检测

本文介绍了在Unity3D游戏引擎中,如何利用射线(Ray)进行碰撞检测。当玩家在屏幕上点击位置时,通过Camera.ScreenPointToRay获取射线,并使用Physics.Raycast进行碰撞检测,将角色移动到点击的位置。同时,文章还提及了RaycastHit类用于存储碰撞信息,以及RaycastAll方法进行多目标检测。
摘要由CSDN通过智能技术生成

游戏中比如RPG游戏,当我们点击地图的时候,人物跟着就去了点击的地点,这个过程也可以是我们点击屏幕,一道射线从摄像机的平面中发射,指到我们点击的地点。 

例如:我们点击某一处,球体就到某一处

创建一个脚本挂载到球体身上 

脚本:

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

public class RayTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //方式一
        //Ray ray = new Ray(Vector3.zero, Vector3.up);
        //方式二
        //通过摄像机获得射线,ScreenPointToRay 从屏幕点开始发射射线 Input.mousePosition 鼠标按到的点
        //Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    }

    // Update is called once per frame
    void Update()
    {
        //按住鼠标左键发射射线
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //声明一个碰撞信息类
            RaycastHit hit;
            //碰撞检测
            //Physics.Raycast物理类里面一个射线检测方法,out hit 注意out+空格是C#里面的语法,我们声明了信息类,而out会帮助我们填写内容
            bool res = Physics.Raycast(ray, out hit);
            //如果碰撞到的情况下,hit就有内容了,反之就没有内容了
            if (res)
            {
                Debug.Log(hit.point);
                transform.position = hit.point;
            }
            //多检测
            //100:检测距离, 1<<10:只检测第十个图层
            RaycastHit[] hit = Physics.RaycastAll(ray, 100, 1<<10);
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值