变换组件移动物体
gameObject.getComponent<T>() : 获取相应组件的引用,查找当前游戏物体上的某个组件,保存它的引用。Transform.Translate(Vector3, Space) : 移动物体的位置。 游戏物体往某个方向移动;以自身坐标系或世界坐标系。
Vector3[struct] :三维向量。 向量,可以表示一个方向,也可以表示一个位置。Space[enum] :空间。Space.Self :表示物体自身的坐标系。Space.World :表示物体所在的世界坐标系。
脚本是游戏物体的一部分,一般控制谁的脚本就挂载在谁的身上。
使用 Transform.Translate() 方法移动物体的位置, 特点如下:
- 移动的物体会“穿透”场景中其他的物体模型;
- 移动的物体不会受重力影响(到达场景边缘外,不会下落)。
刚体组件
刚体:Rigidbody ,属于物理类组件。 作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意 味着可以像现实中的物体一样运动。
Mass [质量] 设置物体的质量,也就是重量。质量单位是 KG。Drag [阻力] 空气阻力,0 表示无阻力,值很大时物体会停止运动。Angular Drag [角阻力] 受到扭曲力时的空气阻力,0 表示无阻力,值很大时物体会停止运动。Use Gravity [使用重力] 是否使用重力。
使用刚体移动物体: Rigidbody.MovePosition(Vector3) :使用刚体移动物体的位置。 使用刚体移动物体,物体是根据世界坐标系的方向移动的。 使用刚体移动物体,物体会触发物理相关的事件。
MovePosition 中的 Vector3 要使用“当前位置”+ 方向 的方式。 Transform.Position :属性 当前物体的位置。
使用刚体移动物体, 特点如下:
- 会于场景中的模型物体发生碰撞;
- 会受重力影响(到达场景边缘外,会下落)。
常用方法:
-
AddForce() : 给刚体添加一个力,让刚体按“世界坐标系”进行运动。 Rigidbody.AddForce(Vector3,ForceMode);
ForceMode 参数: 类型为枚举类型,以什么样的方式添加力给刚体。
Acceleration :[?k?sel??re??n](加速度);Force :(力)这种模式通常用于设置真实的物理;Impulse :(冲击力)这种模式通常用于瞬间发生的力;VelocityChange :(速度的变化); -
AddRelativeForce() : 给刚体添加一个力,让刚体按“自身坐标系”进行运动。 Rigidbody.AddRelativeForce(Vector3,ForceMode);
-
FixedUpdate() : 固定更新方法。 所有和物理相关的操作,代码都要写在 FixedUpdate() 方法体内。 固定更新的时间间隔是 0.02 秒,1 秒执行 50 次。 Edit-->Project Settings-->Time 面板中的 Fixed Timestep 参数设置。 Update() 方法是每帧执行一次。 画面每渲染完一次,就是一帧,每帧的时间是不固定的。 在Update() 方法中执行物理操作,会出现卡顿的情况。
碰撞体
使用刚体移动的物体,与场景中其他的物体相碰撞: 其实是碰撞的目标物体的“碰撞体”组件,也就是 Collider。 另外和目标物体碰撞的,是我们移动的物体的自身的“碰撞体”组件。 碰撞体可以理解为我们的模型的“外骨骼”。 模型只要加了刚体,就必须要加碰撞体,否则没有意义。
碰撞事件监测方法:
OnCollisionEnter(Collision) : 当碰撞开始时调用,只会调用该方法一次。OnCollisionExit(Collision) : 当碰撞结束时调用,只会调用该方法一次。OnCollisionStay(Collision) : 当碰撞进行中时,会持续调用该方法。
Collision 参数 : 碰撞,一个类。 作用:用于传递碰撞信息。 Collision.gameObject 属性,与当前物体碰撞的物体的引用。 gameObject.name 属性,当前物体的名字。
触发事件
触发器: 将碰撞体组件属性面板上的“Is Trigger” 选项选中,当前的游戏物体的碰撞体 就变成了触发器。 移动的刚体物体会穿透碰撞体勾选了“Is Trigger” 的物体。
触发事件: 当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件。 触发用途:不与目标物体发生直接的碰撞(接触),而是只要进入目标物体的“触 发范围”就能执行某些特定操作。
触发事件监测方法:
OnTriggerEnter(Collider) : 当进入触发范围时开始时调用,只会调用该方法一次。OnTriggerExit(Collider) : 当离开触发范围时开始调用,只会调用该方法一次。Collider 参数: 碰撞体,一个类。 作用:用于传递触发信息。 Collider.gameObject 属性,进入触发范围内的目标物体的引用。 gameObject.name 属性,当前物体的名字。
网格过滤器组件
网格过滤器:Mesh Filter 。 该组件只有一个“Mesh” 属性,用于设置当前游戏物体使用哪个模型进行展示。 Mesh :网格,也就是模型。
网格渲染器组件
网格渲染器:Mesh Renderer 。 该组件用于“渲染”显示模型。如果没有该组件,模型就不会显示。
属性 :
Cast Shadows [投射阴影] On :开启阴影显示 Off :关闭阴影显示Receive Shadows [接收阴影] 选中就是接收 不选中就是不接收Materials [材质球] 用于设置用哪个材质球渲染当前的模型(Mesh)。 我们拖拽到游戏物体身上的材质球,其实就是赋予给了这个组件的这个属性上。
Tag
Tag 标签,就是一个标签。标签可以起到标识,区分的作用。 同一类的模型,我们可以根据需要给他们设置成统一的标签。
GameObject.FindGameObjectsWithTag(string) :[静态方法] 通过特定的标签,查找到所有“贴有”该标签的游戏物体,返回一个数组。 String :标签名
|