Unity入门 物理系统
2016-11-28 21:02
363 查看
一
1、碰撞检测的条件
(1)、碰撞的双方都要有碰撞器组件(比如子弹和敌人都要有碰撞组件)。
(2)、要撞其他游戏对象的游戏对象本身要有刚体组件(子弹必须有刚体组件,把子弹的使用重力去掉,敌人也要有刚体组件)。
(3)、碰撞的脚本要挂载在运动的物体上(将脚本挂载子弹上)。
2、碰撞检测的方法
(1)、voidOnCollisionEnter(Collision col)
参数:col—被碰撞的带有碰撞器的游戏对象
含义:当碰撞进入时,执行该方法。
(2)、void OnCollisionStay(Collision col)
参数:col—被碰撞的带有碰撞器的游戏对象
含义:当碰撞一直持续时,执行该方法。
(3)、voidOnCollisionExit(Collision col)
参数:col—被碰撞的带有碰撞器的游戏对象
含义:当碰撞退出时,执行该方法。
二
1、触发检测的条件
(1)、碰撞的双方都要有碰撞器组件(比如子弹和敌人都要有碰撞组件)。
(2)、要撞其他游戏对象的游戏对象本身要有刚体组件(子弹必须有刚体组件,把子弹的使用重力去掉,敌人不一定有刚体组件)。
(3)、碰撞的脚本要挂载在运动的物体上(将脚本挂载子弹上)。
(4)、必须把运动物体身上的isTrigger属性勾上(将子弹的isTrigger勾上)。
2、触发检测的方法
(1)、void OnTriggerEnter(Collidercol)
参数:col—被触发的带有碰撞器的游戏对象
含义:当触发进入时,执行该方法。
(2)、void OnTriggerStay(Collider col)
参数:col—被触发的带有碰撞器的游戏对象
含义:当触发一直持续时,执行该方法。
(3)、void OnTriggerExit(Collidercol)
参数:col—被触发的带有碰撞器的游戏对象
含义:当触发退出时,执行该方法。
三: 球形检测:
吃道具,收集金币使用碰撞检测
吸铁石作用效果使用OverLerpSphere方法
using UnityEngine;
using System.Collections;
public class Test1 : MonoBehaviour {
public bool magnetState = false;
public float time;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(magnetState == true)
{
time += Time.deltaTime;
Collider[] cols = Physics.OverlapSphere(this.transform.position, 5);
for (int i = 0; i < cols.Length ; i ++)
{
Coins temp = cols[i].GetComponent<Coins>();
if(temp != null)
{
temp.startMoveToPlayer = true;
}
}
if(time > 2f)
{
magnetState = false;
time = 0;
}
}
}
void OnTriggerEnter(Collider col)
{
if(col.CompareTag("Magnet"))
{
Debug.Log("获得吸铁石道具");
magnetState = true;
}
}
}
四:线性检测:
线性检测的方法是:Physics.Raycast(ray,out hit)
Physics.Raycast(起始位置,射线方向,out hit)
RaycastHit hit;// 获取从Raycast 函数中得到的信息反馈的结构
//射线碰撞检测 hit为射线检测到的 带有碰撞器的物体
if(Physics.Raycast(ray,out hit))
{
//point就是射线撞到的点的位置信息
vector3 pos= hit.point; // 在世界空间中,射线碰到的碰到碰撞器的碰撞点
}
1、碰撞检测的条件
(1)、碰撞的双方都要有碰撞器组件(比如子弹和敌人都要有碰撞组件)。
(2)、要撞其他游戏对象的游戏对象本身要有刚体组件(子弹必须有刚体组件,把子弹的使用重力去掉,敌人也要有刚体组件)。
(3)、碰撞的脚本要挂载在运动的物体上(将脚本挂载子弹上)。
2、碰撞检测的方法
(1)、voidOnCollisionEnter(Collision col)
参数:col—被碰撞的带有碰撞器的游戏对象
含义:当碰撞进入时,执行该方法。
(2)、void OnCollisionStay(Collision col)
参数:col—被碰撞的带有碰撞器的游戏对象
含义:当碰撞一直持续时,执行该方法。
(3)、voidOnCollisionExit(Collision col)
参数:col—被碰撞的带有碰撞器的游戏对象
含义:当碰撞退出时,执行该方法。
二
1、触发检测的条件
(1)、碰撞的双方都要有碰撞器组件(比如子弹和敌人都要有碰撞组件)。
(2)、要撞其他游戏对象的游戏对象本身要有刚体组件(子弹必须有刚体组件,把子弹的使用重力去掉,敌人不一定有刚体组件)。
(3)、碰撞的脚本要挂载在运动的物体上(将脚本挂载子弹上)。
(4)、必须把运动物体身上的isTrigger属性勾上(将子弹的isTrigger勾上)。
2、触发检测的方法
(1)、void OnTriggerEnter(Collidercol)
参数:col—被触发的带有碰撞器的游戏对象
含义:当触发进入时,执行该方法。
(2)、void OnTriggerStay(Collider col)
参数:col—被触发的带有碰撞器的游戏对象
含义:当触发一直持续时,执行该方法。
(3)、void OnTriggerExit(Collidercol)
参数:col—被触发的带有碰撞器的游戏对象
含义:当触发退出时,执行该方法。
三: 球形检测:
吃道具,收集金币使用碰撞检测
吸铁石作用效果使用OverLerpSphere方法
using UnityEngine;
using System.Collections;
public class Test1 : MonoBehaviour {
public bool magnetState = false;
public float time;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(magnetState == true)
{
time += Time.deltaTime;
Collider[] cols = Physics.OverlapSphere(this.transform.position, 5);
for (int i = 0; i < cols.Length ; i ++)
{
Coins temp = cols[i].GetComponent<Coins>();
if(temp != null)
{
temp.startMoveToPlayer = true;
}
}
if(time > 2f)
{
magnetState = false;
time = 0;
}
}
}
void OnTriggerEnter(Collider col)
{
if(col.CompareTag("Magnet"))
{
Debug.Log("获得吸铁石道具");
magnetState = true;
}
}
}
四:线性检测:
线性检测的方法是:Physics.Raycast(ray,out hit)
Physics.Raycast(起始位置,射线方向,out hit)
RaycastHit hit;// 获取从Raycast 函数中得到的信息反馈的结构
//射线碰撞检测 hit为射线检测到的 带有碰撞器的物体
if(Physics.Raycast(ray,out hit))
{
//point就是射线撞到的点的位置信息
vector3 pos= hit.point; // 在世界空间中,射线碰到的碰到碰撞器的碰撞点
}
相关文章推荐
- Unity 入门 物理系统中 添加力
- unity3.5新粒子系统入门分享。。。一二合集。。。
- Unity 物理系统--物理材质
- UNITY_物理系统
- unity3.5新粒子系统入门分享。。。一二合集
- Unity_2D物理系统_076
- Unity 引擎与物理系统相关的基础知识
- unity5 动画系统Mecanim事件快速入门 区分animation和animator不再混淆
- Unity 物理系统--射线
- unity5之物理系统-Rigidbody
- Unity-物理系统-射线
- Unity14--物理系统--刚体、触发器、Force和Toque扭矩、恒力
- Unity 物理系统 铰链使用的一些问题
- unity3.5新粒子系统入门分享。。。一二合集
- Unity_脚本和物理系统的结合使用_011
- Unity-物理系统-材质
- Unity入门操作_动画系统_Legacy_031
- Unity入门操作_动画系统_Mecanim_032
- unity5.3.4 cloth系统使用方法(1)--小白入门
- PowerDesigner15在win7-64位系统下对MySQL 进行反向工程以及建立物理模型产生SQL语句步骤图文傻瓜式详解