Unity3D的物理系统


        物理系统中最常用的组件是Rigidbody和Collider。Rigidbody(刚体)使物体能在物理规律下运动,它是物体系统的基础组件。可以从碰撞两方面来理解物理系统。

力(重力)

      一个带有Collider和Rigidbody的物体从高空落下,因为有力的作用,在物体碰到地面后会倒下。下面我们用一个场景来说明效果:

      新建一个Unity3D工程,在层级面板创建一个圆柱体和地面(它们默认附带有Collider组件),创建后的层级面板如下图:

在这里插入图片描述
       旋转圆柱体使其有一个倾斜角度(更明显的看出效果),然后给圆柱体添加Rigidbody组件(属性面板中Add Component --> Physics --> Rigidbody),场景界面如下图所示,运行游戏会发现圆柱体受到重力的影响掉到地上,然后倒下。
在这里插入图片描述在这里插入图片描述

力(附加力)

       通过程序给物体施加力,即可改变物体的运动轨迹。例如编写如下代码(创建一个名为TestForce的Script脚本),把它附加到上述例子的圆柱体上。如果按下空格键,则是通过Rigidbody的AddForce方法给物体施加一个力(这里施加的是一个方向向上,大小为50N的力)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestForce : MonoBehaviour
{
    //每帧更新
    void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            Rigidbody rigi = gameObject.GetComponent<Rigidbody>();
            Vector3 force = Vector3.up * 50;
            rigi.AddForce(force);
        }
    }
}

       神奇的事情发生了,你会发现,把脚本拖到圆柱体后运行游戏,圆柱体会向下掉,当你按下空格键时,圆柱体又会向上升起。你不停的按动空格键,圆柱体就可以不断的升起和落下,从而保持原来的位置不变。

碰撞

     当“带有Rigidbody和Collider的游戏对象”碰撞到场景中的“带有Collider的游戏对象”时,OnCollisionEnter()方法将被调用。相关的方法有6个,具体见表:

方法说明
MonoBehaviour.OnTriggerEnter(Collider other)当进入触发器
MonoBehaviour.OnTriggerStay(Collider other)当停留在触发器内
MonoBehaviour.OnTriggerExit(Collider other)当退出触发器
MonoBehaviour.OnCollisionEnter(Collision collisionInfo)当进入触发器
MonoBehaviour.OnCollisionStay(Collision collisionInfo)当停留在触发器内
MonoBehaviour.OnCollisionExit(Collision collisionInfo)当退出触发器

     在上面圆柱体掉落例子的TestForce类中,添加如下的语句。

  //当碰撞到物体
  void OnCollisionEnter(Collision collisionInfo)
  {
      Debug.Log("碰撞到" + collisionInfo.gameObject.name);
  }

     运行游戏,在圆柱体碰到地面的时候,OnCollisionEnter方法会调用,如下图所示。

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值