GameObject

GameObject

游戏中每个对象都是GameObject,但GameObject本身不作任何事,GameObject是一个容器,包含的组件使得每个GameObject不同。


Transform

Transform组件决定了每个对象的Position,Rotation,和Scale,每个对象必定有一个Transform组件。如果没有Transform组件,那么GameObject就不会出现在游戏世界中, 导致GameObject的其他属性只是内存中的数据,没有作用。

其中一个Transform的position, rotation 和scale的值都是相对于其父亲GameObject的Transform来说的,如果没有父亲,那么就是相对世界坐标来说的。


Collider

Collider是一个组件,它允许添加了Collider的对象能够作用于有rigidbody组件的对象的Collider

collider 有不同的形状和类型,在场景中它们用绿线表示。它们的形状可以是球,胶囊或者是盒子。如果你想需要更复杂的形状,你可以结合简单的形状,或者是使用 mesh collider。

当游戏引擎中碰撞发生,且两个对象其中之一拥有rigidbody组件,OnCollisionEnter 被调用。


Colliders as Triggers

为了让一个collider成为trigger, 我们只需在collider组件下勾选Is Trigger。当一个collider成为trigger,就不会和其他东西碰撞。其他东西会穿过collider,并且可以被代码检测到, 如 OnTriggerEnter, OnTriggerStay, OnTriggerExit。

和标准的碰撞一样,两个对象必须有一个拥有rigidbody组件。确认你的trigger collider是静态对象,是一个标准的做法,这意味着它们不会因为物理引擎而移动。


Rigidbody

如果你要在游戏中移动你的对象,你需要令这些对象是rigidbody对象,rigidbody组件允许添加它的对象受到物理引擎的影响。

它允许对象受重力影响掉落,拥有物理属性,比如质量(mass),阻力(drag),和速度(velocity)。

对于基于物理的交互,rigidbody是必须的(比如让它受重力影响)。而且对象必须还要有collider,用于和其他物理对象交互。

Rigidbody有许多选项:

  1. Mass
    质量影响碰撞时候的表现,质量大的物体受撞击的影响小于质量小的物体。
  2. Drag
    阻力影响碰撞后静止的快慢。
  3. Angular Drag
  4. Use Gravity
    是否受重力影响,重力加速默认是现实世界的 9.8 ,但你可以改变重力的大小和方向。
  5. Is Kinematic (影响rigidbody是否受物理影响 )
    在场景开始的时候,所有的静态对象,即任何非rigidbody对象,会被物理引擎标记一次,并且为了追求效率,不再标记它们。然而当你移动一个静态对象的时候,为了准确性,物理引擎会标记所有的静态对象,这个代价很昂贵。为了避免这个情况,Kinematic rigidbody 对象可以通过它们的transform被使用和移动。你可以拥有能影响其他对象的对象,且不被其他对象影响。而且不需要重新计算其他静态对象。
  6. Interpolate
    用来解决抖动问题。
  7. Collision Detection
  8. Constraints
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值