前言
中山大学数据科学与计算机学院3D游戏课程学习记录博客。
游戏代码: gitee
游戏视频: bilibili
参考师兄的博客: 师兄博客
游戏要求
- 按 adapter模式设计图修改飞碟游戏。
- 使它同时支持物理运动与运动学(变换)运动。
游戏分析
重用游戏五的代码,需要增加物理运动的相关代码,即PhysisDiskFlyAction.cs;
然后在FirstController.cs中根据情况选择调用物理运动和运动学运动两种运动方式,就可以实现adapter模式。
adapter模式:
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
游戏实现
- PhysisDiskFlyAction.cs的实现:
PhysisDiskFlyAction.cs的实现模仿DiskFlyAction.cs,继承自SSAction;
因为要使用物理引擎,所以通过FixedUpdate来实现位置更新;
在Start()函数中给飞碟施加一个冲击力。
public class PhysisDiskFlyAction : SSAction
{
private Vector3 start_vector;
public float power;
private PhysisDiskFlyAction() {
}
public static PhysisDiskFlyAction GetSSAction(int lor, float power) {
PhysisDiskFlyAction action = CreateInstance<PhysisDiskFlyAction>();
if (lor == -1) {
action.start_vector = Vector3.left * power;
}
else {
action.start_vector = Vector3.right * power;
}
action.power = power;