1、简答并用程序验证
- 游戏对象运动的本质是什么?
游戏运动本质就是使用矩阵变换(平移、旋转、缩放)改变游戏对象的空间属性。
- 实现物体的抛物线运动。
public class move1 : MonoBehaviour
{
private float g = 0.25f;
private float vx = 2, vy = 1;
void Update()
{
this.transform.position += vx * Vector3.left * Time.deltaTime;
this.transform.position += vy * Vector3.up * Time.deltaTime;
vy -= g * Time.deltaTime;
}
}
2、编程实践
游戏中的事物:
- 河岸
- 河
- 牧师(priest)
- 魔鬼(devil)
- 船
玩家动作表:
游戏状态 | 动作 | 响应 |
已结束 | 左键单击重新开始按钮 | 重新开始游戏 |
进行中 | 左键单击人物 | 在船和其靠近的岸边之间移动(船上最多两人) |
左键单击船 | 如果船上有人物(牧师或魔鬼均可),则船移动到另一端 |
制作游戏预制:
(船、魔鬼、牧师的模型采用开源资源,分别来自:Lowpoly paper boats、Devil、Supercyan Character Pack Free Sample)
初始化代码:
public class Main : MonoBehaviour
{
public static MainController controller;
public static UI ui;
void Start()
{
Object.Instantiate<GameObject>(Resources.Load<GameObject>("Prefabs/Sea"), new Vector3(1.78064036f, 0.428083658f, -2.58708763f), Quaternion.identity);
controller = new MainController();
(gameObject.AddComponent(typeof(UI)) as UI).controller = controller;
}
}
MVC架构:
- Model:Entity、Boat
Entity为人物类,Devil类和Priest类继承人物类
public class Entity
{
private GameObject obj;
public int loc; // 位置,0:右岸,1:左岸,2:船上
public int n;