unity 旋转_自学Unity游戏开发之Unity物理引擎初级

添加组件

Unity组件必须依赖于游戏对象才能显示在游戏场景中,为游戏对象添加组件(或者为游戏对象挂载组件),方式有很多种,首先可以选择游戏对象,在检视面板中,可以看到AddComponent按钮。选中该按钮可以给游戏对象添加各种类型组件,包括之前学习的脚本。另外也可以在菜单栏上,选中Component给对象添加组件。

物理组件

在介绍物理组件的时候,首先先学习一下刚体(Rigibody),刚体可以理解为一个物理世界的物体,只有这个物体才能被自然界的约束所作用,自然界的约束有重力、扭矩力、冲力。物体与物体之间可以有相互碰撞的作用力、摩擦力等。刚体只能配合游戏对象才能使用,所有刚体组件的游戏对象才能受到物理世界的约束,有了刚体组件游戏对象的碰撞才能更加真实。试着创建一个对象,并将一个刚体组件挂载到该对象

接下来我们学习一下刚体组件的一些属性:

1.Mass(质量)表示刚体的质量,数据类型是float,默认情况都是1.一版来说大部分物理的Mass应该设置为接近0.1到10.0之间。

2.Drag(阻力):指阻止物体移动的时的阻力,物体进行任意方向的移动都会受到Drag的影响。类型也是Float。

3。Angular Drag(旋转阻力):指阻碍物体物体旋转的力。类型为float。

4.Use Gravity(使用重力):勾选表示使用重力。类型为Bool

5.Is Kinematic(是否遵循动力学):该属性表示是否遵循牛顿定律。类型为Bool。

6.Interpolate(差值方式):一般为Note,由于物理计算和渲染不是同步,利用差值可以近似渲染的时间点。

7.Collision Detection(碰撞检测模式):防止物体因为速度飞快而产生击穿现象。

8.Constrains(约束条件):一般物体的各个方向位移或者旋转都会受到物理世界的影响,但是可以通过该选项来限制某些方向上的位移或者旋转。

刚体变量

为了获取和更改物体的运动状态,Unity3D还预留了多个变量接口:

1.AngularVelocity(角速度):表示刚体的角速度向量,数据类型为Vector3,该变量的方向既为刚体旋转轴方向,旋转方向遵循左手定则。

2.Velocity(位移速度):表示物体的位移速度值。

3.CenterOfMass(重心):通过调低物体的重心,可以使物体不因为其他物体的碰撞或者作用力而倒下。

4.DetectCollisions(碰撞检测开关):表示物体是否能够与其他物体产生碰撞效应。

5.InertiaTensor(惯性张量):描述物体转动惯量,类型为Vector3

刚体常用方法

Void Start(){

GetComponent().AddForce(Vector3.up*3);//给刚体施加力

GetComponent().AddExplosionForce(19.0f,transform.positi

on,10,1.5f,ForceMode.Force);//施加爆炸力

GetComponent(). AddRelativeForce(Vector3.up*10,ForceM ode.Force);//施加相对力

GetComponent().AddTorque( Vector3.right*70,ForceMode.Force); //施加力矩

GetComponent().AddRelativeTorque(Vector3.right*70,ForceMode.Force);//施加相对力矩

void FixedUpdate(){ GetComponent().MovePosition(transform.position + Vector3.right*Time.deltaTime);//移动刚体

GetComponent().MoveRotation(transform.rotation*Quaternion.Euler(newVector3(0,100,0)*Time.deltaTime));//旋转物体

GetComponent().AddForceAtPosition(Vector3.up,transform. position,ForceMode.Force);//在指定点施加

除了以上方法还有:

1.计算相对刚体的最近点(ClosestPointOnBounds)

2.获取点坐标系的速度(GetPointVelocity)

3.获取基于相对点坐标系的速度(GetRelativePointVelocity)

4.确定物体是否处于休眠(IsSleeping)

5.设置密度(SetDensity)

6.强制休眠(Sleep)

7.唤醒(WakeUp)

8.扫描检测(SweepTest)

碰撞体

碰撞体的类型包括6中:

1.盒子碰撞器

2.球体碰撞器

3.胶囊碰撞器

4.网络碰撞器

5.车轮碰撞器

6.地形碰撞器

碰撞体过滤

在Unity中物体和物体之间的碰撞不一定需要发生碰撞的时候就需要用到彭专题过滤。

void Start () {

Physics.IgnoreCollision

(ball1.GetComponent(),ball2.GetComponent(),true); }

物理材质

物理材质相当于组成物体的材料,材料不同产生的碰撞效果不同

Unity中创建物理材质的具体操作:在Project视图下Creat>Physice Material,然后再对其精心调节。

e4a2f05c96a0f14c3eeab00dff5d0bc3.png

如果你想自学Unity游戏开发,Java开发 需要资料视频,教材等的可以评论自学编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值