求问一下 unity的射线碰撞怎么弄

2025-01-03 01:42:44
推荐回答(1个)
回答1:

金币采集游戏中的 控制器和金币发生作用?

如果是像超级玛丽那样的话 我觉得是用不到射线的 用 碰撞判定就好

如果是用鼠标点击 的话要判定点中物体 如下

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

///

/// 该脚本 挂于相机上

///

public class RayDemo : MonoBehaviour

{

Ray ray;//射线

RaycastHit hitInfo;//被 射线击中的返回参数

private void Lay()

{

ray = this.GetComponent().ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线  

if (Physics.Raycast(ray, out hitInfo))//如果射线碰撞到了物体

{

//  hitInfo.collider.gameObject 获得被点击的物体的信息

if(hitInfo.collider.gameObject.name.Split('(')[0]=="金币")

{

//调用加分或金币消失的方法 

//可以hitInfo.collider.gameObject.GetComponent<类名>()获取被点击物体身上的脚本

}

}

}

private void Update()

{

Lay();//发生射线的方法 需要长时间判定 需要在update或其他可以发出的地方使用

//也可以在一些委托方法在特定条件下调用

}

}

如果是射线用的不熟悉 也可在金币身上的脚本里面 使用OnMouseDown()方法来调用相关的方法