8.unity角色移动(刚体Rigidbody2D)

刚体2D(Rigidbody 2D)

当物体运动速度远小於光速可被视为理想刚体,可以忽略型变,也就是说被碰撞後形状会保持一样。
也就是说刚体在物理中被视为不形变的物体。

替物件上新增元件"刚体",使物件可以使用物理系统。
1.png

由於是制作2D游戏,选择Rigidbody 2D。

2.png

刚体2D(请参阅Rigidbody 2D)

3.png

运动种类Body Type,可以选择物理系统
1.Dynamic 动力,运动时受力影响。
2.Kinematic 运动,不受力影响但会运动。
3.static 固定,不受力影响也不会动。

物理属性
1.Mass质量,F=ma,会影响碰撞速度,大质量去撞小质量,小质量会用较快的速度飞出去。
2.Drag阻力,分为线性阻力和角阻力。像摩擦力一样,决定慢下来的速度。
3.Gravity Scale重力大小,物体受重力影响的程度。
※环境重力可以调整(Edit → Project Settings... → Physic 2D)

碰撞侦测Collision Dectection
1.Discrete 非连续性
2.Continuous 连续性

睡眠模式Sleeping Mode
睡眠模式决定rigidbody要不要工作(启用),醒着就要,睡着就不用,可透过事件改变状态。
1.Never Sleep 不睡,一直都醒着
2.Start Awake 开始时醒着
3.Start Asleep 开始时睡着

差值Interpolate
差值,系统推算与差值,负责改善不规则位移,如果运动起来有不明抖动可以打开这个修正。
1.None 无
2.Interpolate 差值,根据前一帧的位置进行平滑
3.Extrapolate 推算,推算下一帧的位置进行平滑

限制Constraints
1.Freeze Position X Y ,限制X轴或Y轴位移,可以做成平移或垂直移动。
2.Freeze Rotation Z ,限制Z轴转动,这样人物就不会翻转,才不会头下脚上。

利用rigidbody 2D移动

void Awake() //或是void Start()
{
    Rigidbody2D rb; //建立刚体2D,名叫rb(自己取)
	rb=GetComponent<Rigidbody2D>(); //抓取物件的刚体
}

void Update()
{
	movement();
}

private void movement()
{
	if (Input.GetKey("d"))  //其他方向以此类推
	{
		rb.velocity= Vector2.right;
	}
}

另外可以使用Rigidbody2D.MovePosition这个方法(请参阅unity手册)


<<:  Day 8 - 基本语法3 (运算)

>>:  Azure - Day2 以考取AZ204为目标

Android学习笔记16

因为如果把dialog写在viewmodel里面,之後在自动化测试的时候可能会出问题,所以在mvvm...

JavaScript Array | 与其他程序语言很不同的阵列(上)

JavaScript Array (阵列) 阵列 (array) 是一个有序的序列,阵列中可以储存不...

24 让画面跟游戏联动

用 PubSub 更新游戏状态 现在我们要让玩家订阅游戏的状态 并让游戏在状态更新的时候,广播到双方...

Day 17 跟着官方文件学习Laravel-再战测试

今天继续来写测试啦!!昨天我们测试destory方法後,今天我想写store的测试。 首先,我们先测...

[Day06] TS:整合前几天所学,来写个 Generic Functions 吧!

这几天的内容中,我们已经学到了几个重点: 泛型(generics)的使用 使用 extends 限制...