作业帮 > 综合 > 作业

unity3d 求射线碰撞物体的例子,要求只可以与某层物体发生碰撞.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/03 04:57:52
unity3d 求射线碰撞物体的例子,要求只可以与某层物体发生碰撞.
c#:
using UnityEngine;
using System.Collections;
public class Pathing :MonoBehaviour {
private int LayerGround;
private bool CastRays = true;
void Start () {
LayerGround = LayerMask.NameToLayer("Ground");
}
void Update () {
if (CastRays) {
Ray ray = Camera.mainCamera.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
// Raycast
if (Physics.Raycast(ray,out hit,Mathf.Infinity)) {
if (hit.transform.gameObject.layer == LayerGround) {
Debug.Log("Ground");//这里和指定层碰撞
} else {
Debug.Log("Other Objects");
}
}
}
}
}
js:
private var LayerGround;
private var CastRays :boolean = true;
function Start () {
LayerGround = LayerMask.NameToLayer("Ground");
}
function Update () {
if (CastRays) {
var ray = Camera.mainCamera.ScreenPointToRay (Input.mousePosition);
var hit :RaycastHit;
// Raycast
if (Physics.Raycast(ray,hit,Mathf.Infinity)) {
if (hit.transform.gameObject.layer == LayerGround) {
Debug.Log("Ground");//这里和指定层碰撞
} else {
Debug.Log("Other Objects");
}
}
}
}
再问: 你这是是判断物体在哪一层,其实我是想画出那条射线。但是弄不到忽略层。
再答: 那就判断从Cube发出的射线是否和你指定层(比如,程序中的Ground层)发生碰撞,如果碰撞的物体是Ground层的,就从Cube的postion画条线到hit的position,其他的不管 Debug.Log("Ground"); 下加入 Debug.DrawLine(transform.position,hit.transform.position); 只要鼠标移动到是Ground层的物体就会从Cube发出射线到鼠标点,脚本是赋给Cube的