Unity3d 碰撞检测

using UnityEngine;
using System.Collections;

public class hitCheck : MonoBehaviour {
   //两个物体能发生碰撞的条件是:两个都带有collider且其中一个是刚体。
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
/////////////////触发器////////////////////
    //刚进入触发范围的时候
    void OnTriggerEnter(Collider other)
    {
        print("进入触发范围");
    }

    //持续待在触发范围内
    void OnTriggerStay(Collider other)
    {
        print("持续触发");
    }

    void OnTriggerExit(Collider other)
    {
        print("离开触发范围");
    }
//////////////////碰撞相关的三个函数////////////////////
    //发生碰撞的两个物体必须有相对运动
    //碰撞开始时调用一次,“与地面碰撞也会触发”
    void OnCollisionEnter(Collision other)
    {
        print("碰撞开始");
    }
    //有接触,且有相对移动
    void OnCollisionStay(Collision other)
    {
        print(other.gameObject.name);
        if(string.Equals("Cube2", other.gameObject.name))
        {
            print("与cube2发生了碰撞");
        }
        print("碰撞中");
    }
    //碰撞结束
    void OnCollisionExit(Collision other)
    {
        print("碰撞结束");
    }
    ///////////////////////////////////////////
}
时间: 2024-10-08 10:21:47

Unity3d 碰撞检测的相关文章

Unity3d碰撞检测中碰撞器与触发器的区别

一,要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动. 二,两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体. 三,在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器. 1>碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上,碰撞检测,但

碰撞器与触发器[Unity]

请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过. 物体发生碰撞的必要条件: 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体. 在unity3d中,能检测碰撞发生的

(转)Unity3d中的碰撞检测

很多时候,当我们的主角与其他GameObject发生碰撞时, 我们需要做一些特殊的事情,比如:子弹击中敌人,敌人就得执行一系列的动作.这时,我们就需要检测到碰撞现象,即碰撞检测.这一篇,我来具体谈谈自己所了解的碰撞检测,希望高手不佞赐教. 首先,我们得明确一点:即产生碰撞信息所需要的条件.事实上,在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器.这两种方式的应用非常广泛.为了完整的了解这两种方式,我们必须理解以下概念:    (一)碰撞器是一群组件,它包含了

【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏

物体碰撞检测是游戏编程里面非常常用的功能,一旦碰到就怎么怎么样,比如掉血等.Unity3D直接就提供了物体碰撞检测的接口,实现起来很方便.借此功能,完成了一个平衡球游戏,同时说明Unity3D的物体碰撞检测.键盘输入处理的检测的使用.游戏如下图所示: 一.场景布置 1.UI方面布置如下所示,基本就是<[Unity3D]对话框.隐藏与显示.拖拽>(点击打开链接)的内容,不赘述了.StartModal和GameoverModal本质是Image,将他们重叠在一起,一会儿将用脚本隐藏Gameover

Unity3D实践系列09, 物理引擎与碰撞检测

在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is Trigger"属性项被勾选上时,这个物体就变成碰撞检测体. 物体有了Rigidbody组件,才会具备一些物理属性,比如重量.阻力.旋转阻力,等等."Use Gravity"项表示是否有自然引力."Is Kinematic"项表示是否被物理引擎所驱动,勾选上表示

Unity3d中的碰撞检测

很多时候,当我们的主角与其他GameObject发生碰撞时, 我们需要做一些特殊的事情,比如:子弹击中敌人,敌人就得执行一系列的动作.这时,我们就需要检测到碰撞现象,即碰撞检测.这一篇,我来具体谈谈自己所了解的碰撞检测,希望高手不佞赐教. 首先,我们得明确一点:即产生碰撞信息所需要的条件.事实上,在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器.这两种方式的应用非常广泛.为了完整的了解这两种方式,我们必须理解以下概念:     (一)碰撞器是一群组件,它包含

Unity3d刚体Rigidbody与碰撞检测Collider

做了一个碰撞的小Demo,用一个球去撞击一堵墙,结果在球和墙都设置了刚体和碰撞体的情况下,球穿过了墙.移动球的位置,球有时能穿过墙,有时会被墙阻挡. 对于球穿过了墙,这个问题,在网上找了一下答案,基本可以确定原因是:球的速度过快,碰撞检测设置了离散检测,即相隔一段比较长的时间检测一次碰撞是否发生,而在这个比较长的时间内,球和墙确实发生了碰撞,只是没有检测到:移动球的位置时,球相对墙的距离改变,也就改变了检测的时间点,所以有时候能穿过墙,有时候会被阻挡. 解决方法:1.增大碰撞体积,即修改碰撞体C

Unity3D中的射线与碰撞检测代码

if (Input.GetMouseButtonDown(0)) { Ray ray = MainCamera.ScreenPointToRay(Input.mousePosition); //以摄像机为原点创建一条射线 RaycastHit hit; if (Physics.Raycast(ray, out hit)) //点击到了带有碰撞体的物体 { Transform clickObjTrans = hit.transform; //获取点击的物体 if (clickObjTrans.na

使用Unity3D是创业团队失败的原因吗?

第一个项目虽然失败了,但是最起码成功上线,并且获得了一定的收入(虽然杯水车薪),也因为第一个项目拉来了投资.但是第二个项目就彻彻底底的胎死腹中了. 没有检讨.没有总结,大家自然而然而又兴高采烈的开启了第三个项目. 我感到有些悲哀.如果我们都不知道自己的弱点在哪里,不明白自己的优势在哪里,如何能够扬长避短?一个创业团队难道靠硬推能推出一款游戏吗? 第二个项目是打算山寨<公主篷特2>,是一款<愤怒小鸟>玩法的带rpg元素的手游.<公主>就是拿Unity做的,并且有一定的3D