打飞碟小游戏

前言

这是中山大学软件工程学院2024年3D游戏编程与设计的第四次作业

所有项目与代码已上传至gitee当中,欢迎大家访问。

游戏演示URL:【unity打飞碟小游戏】 https://www.bilibili.com/video/BV1GpmoY3Ekf/?share_source=copy_web&vd_source=c8cc4eb9c40e046244693752c63e54f5
gitee代码URL: 打飞碟: unity打飞碟小游戏代码

游戏简介

某天你来到户外散步,突然发现有一把无限子弹的枪,和左右各一台持续运转的飞碟发射器,于是你选择?

游戏玩法

游戏界面两侧均会飞出飞碟,玩家需要用鼠标对飞碟进行点击,成功点击到飞碟视为击落,不同的飞碟击落后所获得的积分不同,蓝色一分,红色两分,黄色三分。

游戏时可以通过左侧按钮选择重新开始游戏,以及在普通难度和困难难度中进行切换,切换难度不会导致游戏重开,仍能继承之前的分数。

游戏UML图:


接下来会对针对每个类的代码进行讲解

控件组成:

        游戏的主要功能通过左右各一个飞碟发射器,一个摄像机,UI控制的按钮,显示游戏开始倒计时和现实分数的文本框,用来加强玩家交互效果的步枪,以及用于存放被克隆出的飞碟以及粒子特效的两个置物袋。

代码逻辑

受制于创作时游戏窗口大小不同,具体的参数数值需要根据实际情况调整

Fire_logic:

        (1)参数列表:

                float speed:用来控制飞碟水平方向的飞行速度,垂直方向由刚体组件控制自由落体

                float fire_interval:用来控制飞碟发射器的发射间隔

                bool fire_on_left:用来描述飞碟发射器的位置,是位于屏幕左侧还是位于屏幕右侧

                float fire_position:将fire_on_left转换为1或-1两个浮点数值,利于飞碟计算飞行方向

                GameObject red_feidie:与下面两个GameObject一样,是三种颜色飞碟的预制体

                GameObject blue_feidie

                GameObject yellow_feidie

                Transform feidie_package:飞碟的置物袋,所有克隆出的飞碟都会放在里面,减少对观感以及调试过程的影响。

                

            (2)函数列表:

                void Start():初始化发射器的位置参数,将发射速度设置为普通难度的数值。

                

                void ReStart():游戏重新开始,先停止发射,在3秒后再开始新一轮游戏的发射。

                

                void Fire():持续发射飞碟,并控制每个飞碟的飞行速度,并通过随机数来随机生成飞碟的高度,达到不会让所有飞碟都沿着相同的轨道运动的效果。

                ​​​​​​​

Feidie_Move

        (1)参数列表

                float speed:飞碟横向的飞行速度,由发射器为其赋值

                float fire_position:飞碟飞行的方向,向左/向右(1/-1)

                float point:击碎这个飞碟后会得多少分

                GameObject Bomb:飞碟被击中后的爆炸粒子特效

                Transform particle_package:粒子特效的置物袋,所有的爆炸粒子特效生成时都应作为它的子节点

        ​​​​​​​        

        (2)函数列表

                void Start():找到粒子特效置物袋,准备放入。且为了防止未击中的飞盘累计过多,占用资源,在飞盘3秒未被击中时将其销毁。通过Invoke定时调用来模拟飞盘触地销毁的逻辑。

                

                void Update():让飞盘持续向左或向右运动,再结合上飞盘组件的刚体组件(会做自由落体运动),能让飞盘以斜向下的弧线进行运动。

                

                void Destroy():在销毁自己时,在原地创建一个爆炸的粒子特效

                

Main_logic

        (1)参数列表

                Camera cam:主摄像头,用于发出射线,检测鼠标点击是否击中飞碟

                TextMeshPro time_text:现实倒计时的文本框

                TextMeshPro points:显示当前得分的文本框

                total_points:记录这一轮游戏的总得分

                int time:用来进行游戏开始前的倒计时

        (2)函数列表

                void Start():调用Restart函数;

                void ReStart():重置得分和倒计时

                

                 void ShowTime():在屏幕上显示游戏开始的倒计时,倒计时结束时隐藏文本框

                

                void Update():获取鼠标点击事件,从摄像头向鼠标点击位置发射射线,被击中的物体就是被点击到的物体,如果被击中的是飞盘,就在记录加分后调用飞盘自己的自毁函数。

                

GUI_Control

        (1)参数列表:以下三个参数的作用都是在重启游戏或修改难度时,调用其自身的重启函数或修改其中的参数。

                GameObject fire_point_left

                GameObject fire_point_right

                public GameObject main_logic

                

        (2)函数列表

                void OnGUI():创建三个按钮,并为其各自绑定上对应的函数

                

                void Restart():调用三个组件的ReStart函数

                

                void Normal():调整发射器中发射出的飞碟的速度和发射间隔。

                ​​​​​​​

                void Hard():调整发射器中发射出的飞碟的速度和发射间隔。

                ​​​​​​​

 Destroy_logic

                该脚本用于确保粒子特效能够成功自毁,如果在生命周期内没有自毁,就会在该脚本中调用自毁程序

                ​​​​​​​

Gun_logic

        (1)参数列表

                GameObject fire:存储枪口火焰的粒子特效

                Camera cam:存储摄像机,用来改变枪的朝向,一直指向鼠标光标所在位置

                Transform particle_package:粒子特效置物袋,存放枪口火粒子特效

                float gun_fire_point:用来调整枪口火焰的位置,不同的枪的枪口距离枪体建模中心位置的距离不同,对不同的枪需要进行修改。

                

        (2)函数列表

                void Update():从摄像机向鼠标所在位置发出射线,距离发射点100m的位置视为目前枪应该朝向的方向。将枪旋转至朝向该方向。

如果接收到鼠标点击事件,就在枪口创建枪口火焰的粒子特效,并将其放在粒子特效置物袋中。

                

至此,我们成功完成了打飞碟小游戏的制作!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值