Unity3D 2D射击小游戏瞄准线的实现

Unity3D 2D射击小游戏瞄准线的实现

0. 前言

本片文章是对 https://www.bilibili.com/video/bv1sY411V7tx 视频中瞄准线是如何实现的一个讲解教程,欢迎大家去B站给我一键三连鸭!

这个项目的整个代码和资源已经上传到了GitHub,大家可以去看一下
链接:https://github.com/MycroftCooper/TigerShooting2DGame

1. 效果分析

在这里插入图片描述
在这里插入图片描述

根据视频中的瞄准线效果,我们可以分析出,它应该具有以下几个功能:

  1. 准星会时刻和玩家鼠标保持位置一致
  2. 瞄准线的另一头始终要在枪上
  3. 当准星放在敌人身上,瞄准线和准星会变红
  4. 当开火时准星会有所变化

2. 素材准备

根据以上三个功能,我们就可以知道,其实这个瞄准线的效果应该是分为瞄准线和准星两部分的
所以,我们分别准备好这两部分的素材:
在这里插入图片描述

其中Line为瞄准线,而Sight为准星。

2.1 瞄准线 Line

瞄准线的素材有两种:

  1. 红线:瞄准敌人时使用
  2. 白线:没瞄上敌人时使用

准线是要做成预制体放在游戏里的,所以一张图导入Unity后按照Sprite去切就没问题
在这里插入图片描述
因为是像素游戏,所以记得正确设置单位像素数网格类型过滤模式,设置如下:
在这里插入图片描述

在切的时候需要注意的是,瞄准线的长度我们想让它是可变的,而且是从固定的一段开始伸缩。所以在用精灵切片的时候需要做两件事:设置平铺边界(绿色线)和锚点(设到左边),如下图所示:
在这里插入图片描述

如此一来,瞄准线的素材图就导入成功了,接下来就是:

  1. 创建一个预制体
  2. 添加一个精灵渲染器
  3. 将精灵设为刚刚切好的一个瞄准线的精灵图片
  4. 设置绘制模式(只有设置成平铺才能任意伸缩)
  5. 设置图层顺序(设成-2就能保证瞄准线总是在图层的最前面了)

如下图所示:
在这里插入图片描述
瞄准线的素材就准备完毕啦!

2.2 准星Sight

准星有四种素材:

  1. Sight_Off:没瞄到敌人且没开火的准星
  2. Sight_Off_Fire:没瞄到敌人还开火的准星
  3. Sight_On:瞄到敌人但没开火的准星
  4. Sight_On_Fire:瞄到敌人还开火的准星

准星实际上有两种实现方法:

  1. 也做成游戏物体加入场景中
  2. 切换游戏光标,让游戏的默认光标变为准星

这里我们采用第二种方法吧,第一种大家肯定是会的。

准星的素材图片最好不要使用精灵,而是有一种专门给准星用的格式:光标(Texture 2D)
这种格式的图片无法切图,所以最好把准星的图片自己提前切好再导入,如下图所示:
在这里插入图片描述
在这里插入图片描述
这样准星的素材我们也导入完毕了!

2.3 素材管理代码

因为在游戏的过程中,我们会根据开火情况和瞄准情况来反复更换准星和瞄准线,所以可以写一份代码来专门管理这两种瞄准线和四种准星的素材。
代码如下:

private static class SightResouses {
  			// 用List存储读取的瞄准线(精灵 Sprite)
        private stati
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值