- 📢博客主页:https://blog.csdn.net/zhangay1998
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉
- 📢未来很长,值得我们全力奔赴更美好的生活✨
- 📢前言
- 🐳捕鱼达人
- 🎄游戏图片
- 🔔工程解析
- 💦核心代码讲解
- 🎁游戏源码下载
- 💬总结
- 🚀往期优质文章分享
- 👑评论区抽奖送书
- 🎁抽奖规则
- 🎄推荐理由(⭐⭐⭐⭐)
📢前言
- 今天给大家带来一款
经典游戏复刻版
,捕鱼达人类
的小游戏! - 经典版
捕鱼达人
应该都玩过吧~ 感觉也是一代经典游戏啊! - 还记得之前可羡慕别人可以在电脑和手机上玩这款游戏了!
- 那今天我们就来看看这种类型的游戏是怎样做的吧~
🐳捕鱼达人
捕鱼达人
大家都不陌生,游戏玩法大家都知道就不过多解释了
网上这个类型的游戏有很多种类,先来看一下本篇文章分享的游戏效果吧!
受限于图片大小的缘故,动态图看起来比较卡,其实游戏很丝滑! 下载体验就知道了
🎄游戏图片
先来看几张游戏内的截图,包括开始时的画面,游戏中和游戏结束等画面
如下所示:
🔔工程解析
- Animations:存放动画的文件夹
- Background:存放游戏的背景图等
- Bullets:存放炮台炮弹的图片素材
- Effect:存放特效素材
- Fish:存放各种鱼的素材
- Fonts:存放字体素材
- Other:一些道具素材
- Prefabs:存放各种预制体,炮弹、鱼儿和金币等预制体
- Scenes:存放项目场景
- Scripts:存放所有脚本
- Sound:存放各种音频资源
- UI:存放各种交互性UI素材
预制体
的话主要就是游戏中的一些UI元素,因为这是一个2D游戏,所以UI中用到的素材、预制体等都是UI了
场景
的话只有两个场景,因为游戏很简单,只有一个开始场景和游戏场景
脚本
的话有十来个,控制游戏的一个运行逻辑过程!
精灵图片
有很多,会在游戏过程进行不断的切换达到一个视觉效果~
动画控制器有很多,主要是各种鱼类的动作!
一个开始场景和游戏场景
游戏的灵魂——脚本代码如下
还有就是音频文件夹了,主要是有很多个音效,用于各种情况下播放不同的声音
还有各种游戏中出现的金币等等素材
这是游戏中用到的UI素材
💦核心代码讲解
这个工程的脚本有十来个,也不是很多,核心的其实就是GameController
游戏控制器和FishMaker
鱼儿制造器
GameController
游戏控制器负责游戏运行的一个核心控制器
包括炮台的各种等级切换、使用金币数量、根据经验升级和 发射炮弹等等核心功能
//使用的是第几档的炮弹
private int costIndex = 0;
//每一炮所需的金币数和造成的伤害值
private int[] oneShootCosts = { 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
private string[] lvName = { "新手", "入门", "钢铁", "青铜", "白银", "黄金", "白金", "钻石", "大师", "宗师" };
//经验等级换算公式:升级所需经验=1000+200*当前等级
while (exp >= 1000 + 200 * lv)
{
exp = exp - (1000 + 200 * lv);
lv++;
lvUpTips.SetActive(true);
lvUpTips.transform.Find("Text").GetComponent<Text>().text = lv.ToString();
StartCoroutine(lvUpTips.GetComponent<Ef_HideSelf>().HideSelf(0.6f));
AudioManager.Instance.PlayEffectSound(AudioManager.Instance.lvUpClip);
Instantiate(lvEffect);
}
///发射炮弹
void Fire()
{
GameObject[] useBullets = bullet5Gos;
int bulletIndex;
if (Input.GetMouseButtonDown(0) && EventSystem.current.IsPointerOverGameObject() == false)
{
if (gold - oneShootCosts[costIndex] >= 0)
{
switch (costIndex / 4)
{
case 0: useBullets = bullet1Gos; break;
case 1: useBullets = bullet2Gos; break;
case 2: useBullets = bullet3Gos; break;
case 3: useBullets = bullet4Gos; break;
case 4: useBullets = bullet5Gos; break;
}
bulletIndex = (lv % 10 >= 9) ? 9 : lv % 10;
gold -= oneShootCosts[costIndex];
AudioManager.Instance.PlayEffectSound(AudioManager.Instance.fireClip);
Instantiate(fireEffect);
GameObject bullet = Instantiate(useBullets[bulletIndex]);
bullet.transform.SetParent(bulletHolder, false);
bullet.transform.position = gunGos[costIndex / 4].transform.Find("FirePos").transform.position;
bullet.transform.rotation = gunGos[costIndex / 4].transform.Find("FirePos").transform.rotation;
bullet.GetComponent<BulletAttr>().damage = oneShootCosts[costIndex];
bullet.AddComponent<Ef_AutoMove>().dir = Vector3.up;
bullet.GetComponent<Ef_AutoMove>().speed = bullet.GetComponent<BulletAttr>().speed;
}
else
{
StartCoroutine(GoldNotEnough());
}
}
}
FishMaker
鱼儿制造器则是控制场景中的各种鱼儿的生成、行走轨迹等功能
这也算是本游戏的一个重点功能
void Start()
{
InvokeRepeating("MakeFishes", 0, waveGenWaitTime);
}
void MakeFishes()
{
int genPosIndex = Random.Range(0, genPositions.Length);
int fishPreIndex = Random.Range(0, fishPrefabs.Length);
int maxNum = fishPrefabs[fishPreIndex].GetComponent<FishAttr>().maxNum;
int maxSpeed = fishPrefabs[fishPreIndex].GetComponent<FishAttr>().maxSpeed;
int num = Random.Range((maxNum / 2) + 1, maxNum);
int speed = Random.Range(maxSpeed / 2, maxSpeed);
int moveType = Random.Range(0, 2); //0:直走;1:转弯
int angOffset; //仅直走生效,直走的倾斜角
int angSpeed; //仅转弯生效,转弯的角速度
if (moveType == 0)
{
angOffset = Random.Range(-22, 22);
StartCoroutine(GenStraightFish(genPosIndex, fishPreIndex, num, speed, angOffset));
}
else
{
if (Random.Range(0, 2) == 0) //是否取负的角速度
{
angSpeed = Random.Range(-15, -9);
}
else
{
angSpeed = Random.Range(9, 15);
}
StartCoroutine(GenTrunFish(genPosIndex, fishPreIndex, num, speed, angSpeed));
}
}
其他的代码就不一一讲解了。喜欢这个小游戏的可以下载源码工程娱乐一下
总共有十几个脚本组成,但是还是挺有可玩性的!喜欢这个类型游戏的小伙伴可以自行下载研究一波!
🎁游戏源码下载
文中这个 捕鱼达人
的源码工程下载链接就在这里啦!
【捕鱼达人】 小游戏下载
有积分的小伙伴可以下载体验,积分不够的直接关注文章最下面的公众号回复:游戏资源
就可以免费领取几十款游戏源码、素材和上千套PPT模板 啦,看看有没有你想要的那一款!
💬总结
- 本篇文章分享了一个
重回童年的经典系列 |【捕鱼达人】
的游戏源码并简单分析了一下游戏结构和代码部分 - 只是简单的分析了一下这个小游戏的
工程结构
和核心脚本
- 感兴趣的小伙伴可以自行下载源码体验哦!
- 喜欢的小伙伴可以三连一波,下次再见啦~
🚀往期优质文章分享
- ❤️Unity零基础到入门 | 游戏引擎 Unity 从0到1的 系统学习 路线【全面总结-建议收藏】!
- 🧡花一天时间做一个高质量飞机大战游戏,过万字Unity完整教程!漂亮学妹看了直呼666!
- 💛通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难
- 💚重回童年的经典系列☀️|【贪吃蛇小游戏】近两万字完整制作过程+解析+源码 【建议收藏学习】
- 🤍重回童年的经典系列☀️| 【皇室战争 】 的 即时战斗类 复刻游戏Demo!两万多字游戏制作过程+解析!
- 💙重回童年的经典系列☀️| 【横版街机格斗游戏】类似“恐龙快打” 该如何制作? | 一起来学习 顺便送源码【建议收藏学习】
- 💜重回童年的经典系列☀️|【炸弹人小游戏】制作过程+解析 | 收藏起来跟曾经的小伙伴一起梦回童年!
🚀 优质专栏分享 🚀 |
- 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
- 🎄比如以下几个专栏:Unity基础知识学习专栏、Unity游戏制作专栏、Unity实战类项目 和 算法学习专栏
- 🎄可以学习更多的关于Unity引擎的相关内容哦!直接点击下面颜色字体就可以跳转啦!
👑评论区抽奖送书
最后在评论区进行抽取三名幸运的小伙伴
送下面这本书籍
-
这次博主多方联系,最终搞到了一些unity 相关的书籍,在这里搞个小活动抽奖送给大家,对看书感兴趣的小伙伴可以参加一波呀,刚开始可能参与的不多,抽中概率很大哦!
-
《Unity 2D游戏开发》
-
一本非常经典的
2D游戏开发
编程名著,结合Unity开发使用效果卓佳! -
尤其是想从事Unity开发2D游戏的小伙伴,这本书就可以让你了解Unity用到的2D相关知识,对症下药可以极大地提高学习效率!
🎁抽奖规则
规则如下:
🚀 规则如下🚀 |
-
给本篇博客文章
点赞
收藏
评论
三连,然后在评论区评论里点赞数 排名前五的评论抽取三个
小伙伴!送一本Unity的书籍! -
总共
抽三本
,中的几率还是很大的哦~ 想看书的小伙伴参与起来!点赞数越高中奖几率越大! -
中奖信息
明天下午本篇文章评论区公布!记得留意呀! -
没抽到的,但是喜欢这本书的小伙伴也可以在网上自行购买哈,官方正品商店购买即可!
🚀 规则如上🚀 |
🎄推荐理由(⭐⭐⭐⭐)
-
虽然许多书籍都专注于使用Unity创作3D游戏,但独立开发者更容易成长的市场是2D游戏。
-
如果你意识到自己是为游戏而生,并想要开发和制作游戏,那你一定会受到本书中真实的、独立的游戏实例的启发。
-
书中实例使用Unity持续更新的2D工作流程中的新工具,讲解在Unity中开发2D游戏的基本概念。
-
我们正处于独立游戏的黄金时代,现在正是构建你一直梦想的游戏的更佳时机。
《Unity 2D 游戏开发》
可以为你指明方向。
没抽到的小伙伴也可以在官方商店购买哈,书还是很棒的,喜欢看书也可以买本看~
Unity 2D游戏开发 京东官方链接在这
书本图片如下,喜欢的小伙伴参与起来!