实验一 接苹果
主要步骤
苹果树制作(苹果与篮子的制作同理)
为苹果添加标签
相机位置设置与游戏面板长宽比设置(16:9)
苹果下落设置(将苹果从平抛运动改为垂直下落)
通过设置物理图层并更改碰撞矩阵表实现
通过PlayerPrefs实现游戏重置时High Score不会重置
PlayerPrefs即使在游戏结束后也不会被销毁,因此最高分得以保留
后续
游戏启动界面与游戏界面
游戏失败的场景(打破最高分会有提示)
游戏成功场景
添加内容详解
导出游戏时的比例问题:找到Canvas的Canvas Scaler组件并将UI缩放模式设置为“屏幕大小缩放”。
场景转换:通过SceneLoader()函数实现了在游戏启动界面按下“Game Start”转换至游戏关卡界面并启动游戏与游戏失败和成功时按下对应按钮的正确转换。
退出游戏:在游戏启动界面左上角有一个Exit按钮按下可以退出游戏回到桌面。该功能通过调用Application.Quit()函数实现。
失败与成功提示:篮筐数为0时判定为游戏失败,当游戏失败时激活Fail的Panel,同时判定是否输出破纪录提示。得分到2000(这个分数可以改动)时判定为游戏成功,激活Success的Panel。
破纪录判定:在游戏失败或成功时将HighScore和当前得分比较,若当前得分较大则输出破纪录提示,若否,则不提示。
最高分重置:在游戏启动界面右上角有一个Reset Score按钮点击即可实现最高分重置为0,通过PlayerPrefs实现。
难度变化:每一千分设置提升难度,通过提升苹果树移动的速度、减小苹果树移动的概率(这会使苹果落下的间隔距离变远)和减小苹果下落的距离实现。
代码展示
AppleTree:实现对苹果掉落间隔,苹果树移动速度和苹果树移动方向的控制。同时也负责判断等级、难度提升以及游戏成功时的相关功能实现。
ApplePicker:负责篮筐生成、销毁和数量检测。同时实现了游戏失败时的相关功能(包括面板唤醒 是否破纪录判断 以及场景转换操作等)。
本次实验有许多关于最高分以及当前得分的调用bug,需要从c#的语言逻辑去理解并解决。同时在游戏代码的设计过程中还需要考虑是否需要每一帧都调用某些内容去减少对性能的损耗。