下面介绍两种给一个游戏对象添加一个Rigidbody组件的方式:
图1.1,由Component菜单选项添加
图1.2,直接在游戏对象的Inspector视图中添加
图1.3就是Rigidbody组件的属性面板图:
该项用于设置游戏对象的质量(同一场景中,建议游戏对象之间的质量差值不要大于100倍)。
当游戏对象受力运动时受到的空气阻力(注意,不是物体间的摩擦力),0表示没有空气阻力,阻力极大时游戏对象会立即停止运动。
当游戏对象受扭矩力旋转时受到的控制阻力。0表示没有空气阻力,阻力极大时游戏对象会立即停止旋转。
开启此项,游戏对象会受到重力的影响。
开启此项,游戏对象将不再受物理引擎的影响从而通过Transform(几何变换组件)属性来对其 *** 作。该方法适用于模拟平台的移动或者带有铰链关节刚体的动画。
None:没有插值。
Interpolate:内插值,基于前一帧的Transform平滑此次的Transform。
Extrapolate:外插值,基于下一帧的Transform平滑此次的Transform。
该属性用于控制避免高速运动的游戏对象穿过其它对象而未发生碰撞,有三个选项可供选择。
也就是说:如果你有一个快速运动的小球,它会穿过一个静态的墙,那么将球设为Continuous即可解决问题。但如果你有多个这样的小球,它们之间则依旧会遇到互相穿过对方的问题,那么将球都设为Continuous Dynamic更好。
该项用于控制对于刚体运动的约束。
Freeze Position:冻结位置。刚体对象在世界坐标系中的x,y,z轴方向上(选中状态)的移动将无效。
Freeze Rotation:冻结旋转。刚体对象在世界坐标系中的x,y,z轴方向上(选中状态)的旋转将无效。
1.AddForce()
作用:给物体添加力
Rigidbody.AddForce(Vector3,ForceMode)
2.AddRelativeForce()
作用:给刚体添加一个力
Rigidbody.AddRelativeForce(Vector3,ForceMode)
1.OnCollisionEnter(Collision)
当碰撞开始时调用,只会调用该方法一次
2.OnCollisionExit(Collision)
当碰撞结束时调用,只会调用该方法一次
3.OnCollisionStay(Collision)
当碰撞进行中,持续调用该方法
1.触发器
将碰撞体组件(Collider)中的“Is Trigger”选中,便成为了触发器
2.触发事件监测方法
1.OnTriggerEnter(Collider)
collider.sendmessage(string):向接触的游戏对象发送消息(也就是目标物体要执行的函数)
2.OnTiggerExit(Collider)
3.OnTiggerStay(Collider)
大概思路..1、主角添加rigidbody和collider(capsule,box都可以,看自己需要),主角添加tag为Player;
2、子d添加rigidbody和collider;
3、主角付一个叫PlayerRole C#脚本,添加 public int blood = 10
4、子d付一个C#脚本,实现OnCollisionEnter(Collision other) 方法,判断collision的tag是不是Player,如果是,得到Player中PlayerRole脚本组件,再减血;如
void OnCollisionEnter(Collision other)
{
if(other.gamerObject.tag == "Player")
{
PlayerRole playerRole = other.gamerObject.getComponet()
playerRole -= 5//扣主角5滴血
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)