Unity3D 2D射击小游戏瞄准线的实现
0. 前言
本片文章是对 https://www.bilibili.com/video/bv1sY411V7tx 视频中瞄准线是如何实现的一个讲解教程,欢迎大家去B站给我一键三连鸭!
这个项目的整个代码和资源已经上传到了GitHub,大家可以去看一下
链接:https://github.com/MycroftCooper/TigerShooting2DGame
1. 效果分析
根据视频中的瞄准线效果,我们可以分析出,它应该具有以下几个功能:
- 准星会时刻和玩家鼠标保持位置一致
- 瞄准线的另一头始终要在枪上
- 当准星放在敌人身上,瞄准线和准星会变红
- 当开火时准星会有所变化
2. 素材准备
根据以上三个功能,我们就可以知道,其实这个瞄准线的效果应该是分为瞄准线和准星两部分的
所以,我们分别准备好这两部分的素材:
其中Line为瞄准线,而Sight为准星。
2.1 瞄准线 Line
瞄准线的素材有两种:
- 红线:瞄准敌人时使用
- 白线:没瞄上敌人时使用
准线是要做成预制体放在游戏里的,所以一张图导入Unity后按照Sprite去切就没问题
因为是像素游戏,所以记得正确设置单位像素数,网格类型和过滤模式,设置如下:
在切的时候需要注意的是,瞄准线的长度我们想让它是可变的,而且是从固定的一段开始伸缩。所以在用精灵切片的时候需要做两件事:设置平铺边界(绿色线)和锚点(设到左边),如下图所示:
如此一来,瞄准线的素材图就导入成功了,接下来就是:
- 创建一个预制体
- 添加一个精灵渲染器
- 将精灵设为刚刚切好的一个瞄准线的精灵图片
- 设置绘制模式(只有设置成平铺才能任意伸缩)
- 设置图层顺序(设成-2就能保证瞄准线总是在图层的最前面了)
如下图所示:
瞄准线的素材就准备完毕啦!
2.2 准星Sight
准星有四种素材:
- Sight_Off:没瞄到敌人且没开火的准星
- Sight_Off_Fire:没瞄到敌人还开火的准星
- Sight_On:瞄到敌人但没开火的准星
- Sight_On_Fire:瞄到敌人还开火的准星
准星实际上有两种实现方法:
- 也做成游戏物体加入场景中
- 切换游戏光标,让游戏的默认光标变为准星
这里我们采用第二种方法吧,第一种大家肯定是会的。
准星的素材图片最好不要使用精灵,而是有一种专门给准星用的格式:光标(Texture 2D)
这种格式的图片无法切图,所以最好把准星的图片自己提前切好再导入,如下图所示:
这样准星的素材我们也导入完毕了!
2.3 素材管理代码
因为在游戏的过程中,我们会根据开火情况和瞄准情况来反复更换准星和瞄准线,所以可以写一份代码来专门管理这两种瞄准线和四种准星的素材。
代码如下:
private static clas