Unity3D基本操作3

鼠标、键盘输入

1,键盘输入
.获取键盘输入
1.相关代码
Input.GetKey(); //按下某键后,持续返回 true
Input.GetKeyDown(); //按下某键的一瞬间,返回 true
Input.GetKeyUp(); //抬起某键的一瞬间,返回 true

返回值:true
参数:KeyCode枚举(Enum)

2,鼠标输入
相关代码
Input.GetMouseButton(); //按下某键后,持续返回 true
Input.GetMouseButtonDown(); //按下某键的一瞬间,返回 true
Input.GetMouseButtonUp(); //抬起某键的一瞬间,返回 true

返回值:bool类型
参数:鼠标按键索引值,0->左键 , 1->右键 , 2->中键。

在这里插入图片描述

使用变换组件移动游戏物体:

1.变换组件移动物体
.相关方法
gameObject.GetComponent():获取相应组件的引用。
查找当前游戏物体身上的某个组件,然后保存它的引用。

Transform.Translate(Vector3, Space):移动物体的位置。

游戏物体往某个方向移动;以自身坐标系或世界坐标系。

相关参数 Vector3[struct]:三维向量。
向量,可以表示一个方向,也可以表示一个位置。
Space[enum]:空间。
Space.Self:表示物体自身的坐标系。
Space.World:表示物体所在的世界坐标系。

备注:脚本是游戏物体的一部分,一般控制谁的脚本就挂载在谁的身上。

2.键盘控制移动方向

通常使用键盘上的“W,A,S,D”来控制游戏物体的前后左右移动。

物理组件–刚体

1.变换组件运动特点
使用 Transform.Translate()方法移动物体的位置,特点如下:

①移动的物体会“穿透”场景中其他的物体模型;
②移动的物体不会受重力影响(到达场景边缘外,不会下落)。

2.刚体组件
刚体:Rigidbody,属于物理类组件。

作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意 味着可以像现实中的物体一样运动。

给物体添加刚体组件 选中游戏物体–>菜单 Component–>Physics–>Rigidbody

刚体属性

1.Mass[质量] 设置物体的质量,也就是重量。质量单位是 KG。
2.Drag[阻力] 空气阻力,0 表示无阻力,值很大时物体会停止运动。
3.Angular Drag[角阻力] 受到扭曲力时的空气阻力,0 表示无阻力,值很大时物体会停止运动
4.Use Gravity[使用重力] 是否使用重力。

4.使用刚体移动物体

Box Collider
Sphere Collider
Capsule Collider
Mesh Collider

相关方法
Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。
使用刚体移动物体,物体是根据世界坐标系的方向移动的。
使用刚体移动物体,物体会触发物理相关的事件。

参数
MovePosition 中的 Vector3 要使用“当前位置”+ 方向 的方式。
Transform.Position:属性 当前物体的位置。

特点
使用刚体移动物体,特点如下:

①会于场景中的模型物体发生碰撞;
②会受重力影响(到达场景边缘外,会下落)。

碰撞体:使用刚体移动的物体,与场景中其他的物体相碰撞: 其实是碰撞的目标物体的“碰撞体”组件,也就是 Collider。
模型只要加了刚体,就必须要加碰撞体,否则没有意义。
在这里插入图片描述
给物体添加碰撞体组件
选中游戏物体–>菜单 Component–>Physics–>Xxxx Collider

刚体的常用方法介绍

AddForce()

作用
给刚体添加一个力,让刚体按“世界坐标系”进行运动。

代码
Rigidbody.AddForce(Vector3,ForceMode);
Vector3:力的方向和大小;
ForceMode:力的模式[enum 类型]。

.ForceMode 参数
类型为枚举类型,以什么样的方式添加力给刚体。

枚举值说明
Acceleration:[əkˌseləˈreɪʃn](加速度);
Force:(力)这种模式通常用于设置真实的物理;
Impulse:(冲击力)这种模式通常用于瞬间发生的力;
VelocityChange:(速度的变化);

AddRelativeForce()
作用 给刚体添加一个力,让刚体按“自身坐标系”进行运动。

代码:

Rigidbody.AddRelativeForce(Vector3,ForceMode);
Vector3:力的方向和大小;
ForceMode:力的模式[enum 类型]。

在这里插入图片描述
FixedUpdate()方法
固定更新方法。
所有和物理相关的操作,代码都要写在 FixedUpdate()方法体内。
固定更新的时间间隔是 0.02 秒,1 秒执行 50 次。
Edit–>Project Settings–>Time 面板中的 Fixed Timestep 参数设置。
在这里插入图片描述
Update()方法是每帧执行一次。
画面每渲染完一次,就是一帧,每帧的时间是不固定的。
在 Update()方法中执行物理操作,会出现卡顿的情况。

刚体碰撞事件监测:

Collision参数
碰撞,一个类。作用:用于传递碰撞信息。
Collision.gameObject 属性,与当前物体碰撞的物体的引用。
gameObject.name 属性,当前物体的名字。
在这里插入图片描述

刚体触发事件监测与处理

触发器:将碰撞体组件属性面板上的“Is Trigger”选项选中,当前的游戏物体的碰撞体 就变成了触发器。 移动的刚体物体会穿透碰撞体勾选了“Is Trigger”的物体。

触发事件:
当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件。

触发用途:不与目标物体发生直接的碰撞(接触),而是只要进入目标物体的“触 发范围”就能执行某些特定操作。

2.触发事件监测方法
1.OnTriggerEnter(Collider) 当进入触发范围时开始时调用,只会调用该方法一次。

2.OnTriggerExit(Collider) 当离开触发范围时开始调用,只会调用该方法一次。

3.OnTriggerStay(Collider) 在触发范围内,会持续调用该方法。

4.Collider 参数
碰撞体,一个类。作用:用于传递触发信息。
Collider.gameObject 属性,进入触发范围内的目标物体的引用。
gameObject.name 属性,当前物体的名字。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值