永发信息网

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

答案:1  悬赏:20  手机版
解决时间 2021-04-27 15:40
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的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
QQ飞车永久A车怎么获得?
怎么才能做到一个对性没有欲望的人?
石家庄植物园游乐场都有什么?
山东青岛考驾照
如果喜欢同性该怎么办?
西川路/S302(路口)怎么去啊,有知道地址的么
玩游戏比E8500更好的AMD系列CPU要求价格与E85
有对黄石熟悉的么?(可否联系下!)
带有义字的诗句,谁能用“玉”字和“水”这两
如何开始农场
百家姓中读“zhao”的姓有什么?全部都要!!
木头遇到什么才会有反应?
宠物狗和猫身上会有蜱虫吗?对人有危害吗?是
谁能帮我找一下《没有人像我一样》这本书的全
多普达的机子
推荐资讯
IE浏览器主页问题
满目疮痍,求祛痘良剂
帮忙找个5800支持flush的浏览器,谢谢
北京怀柔的去哪儿买画妆品又实惠又好?
歙县齐武马家枧
NBA下个季赛哪队能拿总冠军
拍拍上卖的那个叫音速商城商品7折代购的是啥
QQ三国58JS是先买装备好还是先升级好
吃鸡和吃鱼那个对身体好一点?
睡前吃桔子会胖吗?
王者荣耀我的为什么没有功夫老勺的活动入口
鹏程花园东门地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?