本文已参与「新人创作礼」活动,一起开启掘金创作之路
休息完之后,就不想敲了,真的懒批.....后面又跟小组玩游戏,哈哈哈哈哈哈,就只能今天开始玩了,好啦好啦,开始第三天的Unity学习!
(2条消息) Unity3D新手教学,让你十二小时,从入门到掌握!(三 )_Aries.H的博客-CSDN博客
跟大佬学习怎样进行碰撞检测
------------------------------------------------------------------------------------分割
啊啊啊啊啊,这几天出门玩,水了水了,现在过来把这个系列补完
目前页面长这样
发生碰撞需要两个条件
碰撞体要一个具有刚体,一个具有碰撞器。
上一讲我们已经为Cube添加了碰撞器,并且选择了Is Trigger的触发器,那么我们现在开始编写碰撞检测的代码。
在Scripts文件夹下新建一个名为PlayerCollision的C#脚本。
在写代码之前,我要介绍一下碰撞检测有好多种: OnTriggerEnter( Collider other )当进入触发器 OnTriggerExit( Collider other )当退出触发器 OnTriggerStay( Collider other )当逗留触发器 OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器 OnCollisionExit( Collision collisionInfo ) 当退出碰撞器 OnCollisionStay( Collision collisionInfo ) 当逗留碰撞器
以上这六个方法都是MonoBehaviour里面的,因为我们的脚本都是继承的MonoBehaviour这个类。所以我们的脚本里面可以覆盖这六个方法。 因为我们勾选了Is Trigger,所以,我们覆盖OnTriggerEnter( Collider other )方法:
//当进入碰撞器的方法
public void OnTriggerEnter(Collider other)
{
//如果碰撞的GameObject不是Floor
if(!other.gameObject.name.Equals("Floor"))
{
print("报告主人:触发器成功触发!");
}
}
虽然触发成功,但是他穿过了floor,所以应该还是有点问题
这样就ok了,我取消了勾选Is Tigger,然后改动了代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCollision : MonoBehaviour
{
// Start is called before the first frame update
//当进入碰撞器的方法
public void OnCollisionEnter(Collision other)
{
//如果碰撞的GameObject不是Floor
if (!other.gameObject.name.Equals("Floor"))
{
print("报告主人:触发器成功触发!");
}
}
}
所以现在碰撞检测就已经完成啦!