unity3d 求射线碰撞物体的例子,要求只可以与某层物体发生碰撞。
答案:1 悬赏:20 手机版
解决时间 2021-04-27 15:40
- 提问者网友:流星是天使的眼泪
- 2021-04-27 03:04
unity3d 求射线碰撞物体的例子,要求只可以与某层物体发生碰撞。
最佳答案
- 五星知识达人网友:青灯有味
- 2021-04-27 03:33
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的
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的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯