Unity3D碰撞检测的⽅法
1.需要在碰撞物体上加Collider,如果将collider的isTrigger打上勾的话就可以使⽤如下⽅法:
private void OnTriggerEnter(Collider other) //检测函数,并将检测的结果放⼊other变量中.
{
if (other.gameObject.tag==“player”) //将检测结果的碰撞对象 标签与player标签对⽐.判断是否相等
{
Debug.Log(“Collide the door”);
}
}
离开碰撞区域的函数如下:
private void OnTriggerExit(Collider other1)
{
if (other1.gameObject.tag==“player”)
{
Debug.Log(“exit the mat”);
}
}
bool grounded=false;
void Upda(){
CharacterController controller = GetComponent();
//将游戏物体的运动情况存在变量flags中,以便下⾯对游戏物体进⾏检测
CollisionFlags flags= controller.Move(moveDirection * Time.deltaTime);
/
/检测游戏⾓⾊碰撞信息flags与CollisionFlags.CollidedSides中存放的信息进⾏⼆进制与运算.并将结果返回
/*
CollisionFlags.CollidedBelow 底部发⽣了碰撞"flags & CollisionFlags.CollidedBelow"返回1;
CollisionFlags.CollidedNone 没发⽣碰撞"flags & CollisonFlags.CollidedNone"返回1;
CollisionFlags.CollidedSides 四周发⽣碰撞"flags & CollisionFlags.CollidedSides"返回1;
CollisionFlags.CollidedAbove 顶端发⽣了碰撞"flags & CollisionFlags.CollidedAbove"返回1;
*/
unity3d animation//grounded = (CollisionFlags.CollidedSides & flags) != 0; // 检测游戏物体四周是否发⽣碰撞,如发⽣碰撞,返回true执⾏下⾯if语句中的内容; //grounded = (CollisionFlags.CollidedBelow & flags) != 0; // 检测游戏物体四周是否发⽣碰撞,如发⽣碰撞,返回true执⾏下⾯if语句中的内容; grounded = (CollisionFlags.CollidedAbove & flags) != 0; // 检测游戏物体四周是否发⽣碰撞,如发⽣碰撞,返回true执⾏下⾯if语句中的内容; if (grounded)
{
player.GetComponent<Animation>().Play("Default Take");
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论