前言
中山大学数据科学与计算机学院3D游戏课程学习记录博客。
游戏代码: gitee
游戏视频: bilibili
参考师兄的博客: 师兄博客
游戏要求
- 靶对象为 5 环,按环计分;
- 箭对象,射中后要插在靶上;
- 射中后,箭对象产生颤抖效果,到下一次射击 或 1秒以后;
- 游戏仅一轮,无限 trials;
- 添加一个风向和强度标志,提高难度。
游戏分析
- 更改飞碟工厂为箭工厂,当没有箭的时候产生新的箭;
- 更改动作管理器,产生和射箭相匹配的动作;
- 重写FirstController.cs。
游戏实现
- 重写FirstController.cs:
FirstController的主要功能函数有三个;
射箭(Shoot),产生风向(CreateWind)和更新(Update)。
这三个函数是主要实现的,还有一些成员变量,给出在下面。
public class FirstSceneController : MonoBehaviour, IUserAction, ISceneController {
public Camera child_camera;
public ScoreRecorder recorder;
public ArrowFactory arrow_factory;
public ArrowFlyActionManager action_manager;
public GameObject bow;
private GameObject arrow;
private GameObject target;
private int round = 0;
private bool game_over = false;
private bool game_start = false;
private string wind_name = "";
private Vector3 wind = new Vector3(0, 0, 0);
private Vector3 force;
void Update () {
if(game_start) {
Vector3 mpos = Camera.main.ScreenPointToRay(Input.mousePosition).direction;
if (</