• 【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠


    碰撞与休眠


    上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性。一旦刚体開始运动,那么系统方法便会监视刚体的碰撞状态。一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束。关于休眠能够理解成为让游戏对象变成精巧状态。假设给某个游戏对象休眠的状态,那么这个物体将立刻精巧,不再运动。


    碰撞

    首先学习下碰撞几个重要的方法:

    OnCollisionEnter(  ):刚体開始接触的时候,马上调用。

    OnCollisionStay(  ):碰撞过程中,每帧都会调用此方法,直到撞击结束。

    OnCollisionExit(  ):碰撞停止时,调用。


    给代码(下面代码仅仅是整个样例中的一部分,假设须要重建项目,我写完整个unity入门就上传全部的代码):

    using UnityEngine;
    using System.Collections;
    
    public class CollisionTest : MonoBehaviour 
    {
    
    	//碰撞显示信息
    	string show = null;
    	void Start () 
    	{
    		//默认显示内容
    		show = "未发生碰撞";
    	}
    	
    	//进入碰撞
    	void OnCollisionEnter(Collision collision)
    	{
    		show = "进入碰撞,碰撞名称:" + collision.gameObject.name;
    	}
    	//碰撞中
    	void OnCollisionStay(Collision collision)
    	{
    		show = "碰撞中,碰撞名称:" + collision.gameObject.name;
    	}	
    	//碰撞结束
    	void OnCollisionExit(Collision collision)
    	{
    		show = "碰撞结束,碰撞名称:" + collision.gameObject.name;
    		//碰撞结束后让物体休眠
    		collision.gameObject.rigidbody.Sleep();
    
    	}
    	
    	void OnGUI()
    	{
    		//将碰撞信息显示出来
    		GUI.Label(new Rect(100,0,300,40),show);
    	}
    }
    



    碰撞器

    游戏对象假设须要感应碰撞,那么就必须为其加入碰撞器。默认情况下,创建游戏对象时,会自己主动将碰撞器组件加入当中,而碰撞器组件决定了模型碰撞的方式。unity提供了5种碰撞器,各自是:box collider(盒子碰撞器),sphere collider(球体碰撞器),capsule collider(胶囊碰撞器),mesh collider(网格碰撞器),wheel collider(车轮碰撞器)。当中box collider(盒子碰撞器)适用与立方体对象之间的碰撞,sphere collider(球体碰撞器)适用于球体对象之间,capsule collider(胶囊碰撞器)适用于胶囊体对象之间,mesh collider(网格碰撞器)适用于自己定义模型自身网格决定,wheel collider(车轮碰撞器)适用于车轮与地面或者其它对象之间的碰撞。



    加入碰撞器

    在导航菜单条里选择component——physics然后选择种类。




    物理材质

    物理材质可设定物体的表面材质,不同的表面材质可影响碰撞后的物理效果。物理材质可加入不论什么碰撞器中。首先得导入物理材质的资源,能够选择导入系统提供的标准包。import——physic materials。在标准包中提供5种经常使用的材质:bouncy(弹性),ice(冰),metal(金属),rubber(橡胶),wood(木质)


    如图,给球加入了弹性材质,那个球在下落的时候接触地面变会弹回去。

    除了unity标准资源包里的5个物理材质,也能够自行创建物理材质。在project视图中点击create——physic material就可以。例如以下图:


    dynamic friction:动态摩擦,取值在0到1之间,0最小,1最大。

    static friction:静态摩擦,取值在0到1之间,0最小,1最大。

    bounciness:碰撞反弹系数,取值在0到1之间,0最小,1最大。

    friction combine:普通碰撞后的摩擦模式。

    bounce combine:反弹碰撞后的摩擦模式。

    friction direction 2:摩擦方向,方向分X轴,Y轴,Z轴。

    dynamic friction 2:动摩擦系数,摩擦方向依据friction direction 2设定。

    static friction 2:静摩擦系数,摩擦方向依据friction direction 2设定。


  • 相关阅读:
    Mac下安装配置SDK
    macOS brew install 404:Bottle missing, falling back to the default domain错误的修复
    如何修复“无法打开应用,因为Apple无法检查其是否包含恶意软件“
    Selenium4+Python3系列(六) Selenium的三种等待,强制等待、隐式等待、显式等待
    Selenium4.0+Python3系列(四) 常见元素操作(含鼠标键盘事件)
    解决selenium+python 打开浏览器报错 DeprecationWarning executable_path has been deprecated, please pass in a Service object问题
    Selenium4+Python3系列(五) 多窗口处理之句柄切换
    技术团队:给代码评审发起者的4个建议
    中台建设:中台有效落地的6脉神剑
    在代码评审中用好这7招,很容易就能建立起你的反对同盟
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3932810.html
Copyright © 2020-2023  润新知