unity 怎么判断碰撞的物体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity 怎么判断碰撞的物体相关的知识,希望对你有一定的参考价值。

参考技术A 上面这个老外用的是
OnControllerColliderHit(),这个是用于角色碰撞的,物体如果附加了Charactor
Controller(Unity自带的用于角色控制的脚本)则使用这个函数检测碰撞,这是不需要加刚体的。一般的刚体之间碰撞使用OnCollisionEnter(),范围触发用OnTriggerEnter(),如果你是让两个CUBE碰撞,请确保其中一个附加了RigidBody,然后这样写(我用C#):
void
OnCollisionEnter(Collision
collision)

Debug.Log("You
touch
me");

collision是个变量,通过它可以获得你所碰撞的目标的属性以及碰撞点信息和相对速度,如:
collision.collider.某个组件或脚本。
void
OnCollisionEnter(Collision
collision)

if(collision.collider.tag=="enemy")//tag是物体的标签,相当于物体的类别名称。在每一个物体的组件栏(也就是加脚本的那个区域)的最上面可以找到,默认的是UnTagged,也就是没有标签,你找找,然后点击会出现一个下拉列表,默认的已有几个Tag,你也可以加自定义的,点击下拉列表最下方的Add
Tag就可以加Tag,最后选择一个Tag作为物体的名称就可以了。

Destroy(collision.collider.gameObject);//如果检测到对方是敌人,则消灭对方。

想在unity里面做游戏的技能

想做出来玩家捡起一个技能,比如说磁铁,它吸走了金币,然后一定时间后这个技能消失了。应该怎么写呢,求大佬帮忙

不知道你会不会用碰撞器呢,如果会用的话,你可以给玩家添加一个子物体,并给这个子物体添加一个球形碰撞器设置为trigger,然后调整碰撞器的scale到你希望捡到金币的最大距离。

该物体上挂在一个脚本,内容如下:
//技能时间
private float skillTime;
//在update里做一下计时器
private void Update()

if (skillTime < 5)

skillTime += Time.deltaTime;

else

skillTime = 0;
gameObject.SetActive(false);


//金币列表
private List<GameObject> goldlist = new List<GameObject>();
private void OnTriggerEnter(Collider other)

//如果碰撞物是金币
if (other.tag == "goldCoin")

//如果金币列表不包含这个金币
if (!goldlist.Contains(other.gameObject))

//把这个金币添加进金币列表
goldlist.Add(other.gameObject);
//给这个金币添加一个动画(这里用了DOTween,是个插件,可以在assetstore上下载,免费的)
other.transform.DOMove(transform.position, 0.1f).OnComplete(() =>

//在动画完成时把这个金币从金币表中该删除
goldlist.Remove(other.gameObject);
//删除这个金币物体
DestroyImmediate(other.gameObject);
);



然后设置你的金币的tag为“goldCoin”
参考技术A 行!!!追问

大佬行是什么意思

以上是关于unity 怎么判断碰撞的物体的主要内容,如果未能解决你的问题,请参考以下文章

unity3D 篮球怎么实现碰撞到一个物体然后计分?

unity3d 怎么使物体碰撞后消失 求代码

unity2d如何判断高度

unity判断任务在哪个房间

如图,如何在Unity中判断一个物体自身的旋转是不是处于某个特定范围内?

unity3d 怎么检测碰撞?比如主角碰撞到物体之后销毁被撞到的物体