RPG 游戏开发(6)准备更多图块
欢迎来到本系列教程的第二部分!第一部分我们讲解了工程创建直到玩家移动,现在我们来开始设计游戏场景。
首先,我们把之前在 Hierarchy 面板中放置的所有图块(wall 和 floor)删掉,只留下 player_0, Test_NPC 和 Main Camera。还记得怎么操作吗?因为是连贯的,所以我们点击第一个 wall 或 floor,长按 shift 再点击最后一个 wall 或 floor 就可以选取所有了,然后再点 delete 键将其删除。
接下来,我们要使用 Unity 的 Tilemap 来绘制地图。在这之前,我们需要更多的地图图块,所以回到 Project 面板,找到我们的 Atlas 图集,点击 Sprite Editor 进行切片。先前我们已经切了 wall_0 和 floor_0,我们知道这个图集里所有的图块都是 16 × 16 的单位。就算它比较高,那么也是 32 × 16,都是 16 的倍数。
准备图块那么接下来我们切几个图,注意所有名字都从 0 开始,以方便管理,如:wall_0, wall_1。接下来我们切好几个图:
地板
墙壁
回复泉水
楼梯
柱 ...
RPG 游戏开发(5)镜头跟随
比起传统的镜头跟随,我更喜欢一种镜头 - 玩家在一定的范围里移动,镜头位置保持不变,当玩家超出该移动范围,则镜头开始追随玩家,直到玩家再次出现在限定的范围里。
点击 Main Camera 打开摄像头的 Inspector 界面,我们添加一个自定义脚本,命名为:CameraMotor,创建方法和创建 Player 脚本是一样的。然后我们将 Project 面板里的 CameraMotor 文件拖拽到 Scripts 文件夹里。
双击用 Visual Studio 打开 CameraMotor 源文件
删掉所有在 CameraMotor 类里面的函数(Start 和 Update),然后 ctrl + shift + m 打开 Unity 函数库,找到 LateUpdate 函数,点击添加。该函数在 Update 和 FixedUpdate 之后才被调用。因为我们需要在逻辑上让玩家先移动,镜头才跟随。这样不会让玩家产生奇怪的视觉效果。
在代码里,我们需要镜头跟随一个目标,所以我声明一个变量 public Transform lookAt; 将其修饰符写为 public,以便我们可以在 I ...
RPG 游戏开发(4)绘制地板和NPC并实现碰撞检测
首先,我们将 Atlas 素材里一开始我们准备好的 player_1 素材拖曳到 Hierarchy 面板。这时候就会产生第二个角色。我们在 Hierarchy 面板中选中刚刚加入的 player_1,然后在 Inspector 面板中,最顶端的 player_1 改为 Test_NPC。以区分他是玩家或是 NPC,然后我们将他的坐标(Position)的 X 轴修改为 -0.2,让他出现在玩家左侧。
接下来,在 Inspector 面板中,点击 Add Component 按钮,添加一个 BoxCollider2D 元件,该元件就是用来检测物体碰撞,碰撞包括:触碰到NPC和其对话、触碰到怪物造成伤害、触碰到墙体无法继续前进等等。调整框的大小,这里我选择和我的玩家一样。 调整参数为:Offset X: 0, Y: -0.01,Size X: 0.1, Y: 0.1
制作地板我们点击 Atlas,然后在 Inspector 面板中点击 Sprite Editor。我们找到两个合适的图标作为地板和墙体。我选择了深色的块作为墙壁,并将其命名为 wall_0;然后选择另一个较为浅色的块作为地 ...
RPG 游戏开发(3)角色移动
如果你是跟着上一篇文章来的,那么你的屏幕上应该有两个角色,我们先把 player_0 (1) 删掉,直接点击 Delete 键即可。
现在,我要让角色动起来。从这里开始,我们就会涉及到编程了。
不会编程的小伙伴不用担心,我会把所有代码清晰的复制粘贴到这里来。你们只需要理解每一行代码,并且给代码写上注释就行。方便以后你复习项目的时候,可以清楚的知道当初自己写了什么。
回到我们的 Hierarchy 界面,我们选中 player_0。然后在 Inspector 界面点击下方的 Add Component 按钮,添加新的元件。Unity 已经为我们准备了一大堆的元件库,但是现在我们需要创建新的元件(代码)。所以我们需要在元件库搜索框里输入 Player。然后列表会弹出两个元件,直接无视它,点击 New Script,然后点击 Create and Add 按钮。
这时候你就会发现 Project 面板的 Asset 目录下出现了一个文件:Player;并且你的 player_0 的 Inspector 面板也会出现一个 Player 的元件。如果没有的话,将刚刚创建的 Player 文件拖曳 ...
RPG 游戏开发(2)相机设置
上一篇文章,我们说了怎么导入图片素材。接下来,我们点开我们导入的图片旁边那个小箭头,会看见两个我们切割出来的图片,我们选中 player_0,拖拽到 Hierarchy 面板里,这会使其出现在我们游戏场景的中央。或者你也可以拖曳到 Scene 面板里,随意把它扔到一个位置。这边我们直接放在 Hierarchy 面板。
完成这个步骤后,注意看 Inspector 面板的 Transform 元件(Component)的 Position 是不是都为 0(居中)。
拖进去之后,你会发现 Scene 面板里好像什么都没有。这是因为我们的素材太小了,只有 16 个像素。我们可以通过鼠标滚轮在 Scene 面板里进行缩放,然后通过鼠标中键移动位置。
接下来我们打开 Game 面板(ctrl + 2),会发现中间的人物超级无敌小!要调整这个呢,首先我们需要修改我们的目标界面分辨率。在 Game 面板的上方,有个 Free Aspect 下拉框。这个意思是你的游戏界面会随着你的窗口大小自适应。点开下拉框,我们可以选择 16:9 分辨率等。但是我们的游戏像素单位是 16px,所以我们将其改为 800 ...
RPG 游戏开发(1)导入图片素材
第一次做游戏教学文章,不知道大家会不会喜欢。在这里,我们用 Unity 2020.3.15f2 版本作为开发工具。
首先,在游戏目录里创建4个文件夹:
Artwork 图片素材
Animation
Levels
Prefab 预制件
Scenes 默认会被创建,保存游戏场景(舞台)
Scripts 代码
我们用以下素材进行演示,这个素材是由 0x72 设计的 16 × 16 像素图集。原链接在这里,作者将此素材免费分享。喜欢的可以打赏支持创作。
我们将这个图片直接拖到 Unity 项目里的 Artwork 文件夹里。
这个图片包含了:
场景(地图路块)
武器
怪物
角色
动态火炬
我可能会另外做一些像素图标,但是目前学习情况下用这个足够了。
我们将图集文件名改为 Atlas:选中图集,然后点击 F2 或右键点击 Rename 即可重命名。当你选中之后,会看见右侧 Inspector 面板里出现该文件的设定(如下图)。我们将其属性修改为跟下图一样。
Texture Type 决定这张图片是什么类型,我们选的是 Sprite 精灵图。
Sprite Mode = Mult ...
什么是数字签名
在 比特币的原理 的文章里,我提到了数字签名这项技术。那这个数字签名是什么东西呢?它怎么去执行加密的?
生日碰撞在讨论数字签名前,先来了解生日碰撞的概念。以下涉及概率论,我会尽量说的简单点。
问题:一个班级有50个学生,至少两个学生生日在同一天的概率是多少?可能很多人都会觉得,一年 365 天,这概率很低。但是真的是这样吗?举个实例:中学的时候,我班和我同一天生日的就有三个人。
那么这个概率怎么算呢?
首先,我定义 P = 所有人的生日不在同一天的概率,那么 1 - P = 至少两个人生日在同一天的概率。如果全班只有 1 个人, P = 100%,因为 P = 365 / 365,一年有 365 天,他可以任选一天。全班有两个人,那么 P = (365 / 365) × (364 / 365) ,第一个人任选一天后,第二个人只能从 365 天里的 364 天选其中一天。以此类推,当全班有 n 个人,Pn = (365 × 364 × … × (365 - n + 1) ) / 365 n
当全班有 10 个人,则 P10 = 88.1%,也就是 88.3% 的概率全班不在同一天生日。而 ...
比特币的安全
哈喽大家好!我是小麦。继上一篇文章,我总结了比特币的原理。那么这篇文章就会对比特币的安全问题进行研究,探讨比特币在所有记录是公开而且匿名的情况下怎么保证数据的安全。
在文章开始前,可以点击菜单的登录按钮,注册我们的官网账号。未来会有很多福利回馈给各位读者!谢谢各位支持!
哦对了!还有参考视频:
李永乐老师的Youtube:https://www.youtube.com/watch?v=pbAVauYsqP0
李永乐老师的BiliBili:https://www.bilibili.com/video/BV12b411q7ku
传统的身份认证我们在现实社会里用的身份认证有人脸识别、签名、指纹。这些是银行或者电子钱包证明“你是你”的手段。那在虚拟世界里,传统签名是不能被使用的。因为人脸、签名、指纹都能被电脑所储存并复制,是不安全的。
电子签名比特币的用户在注册的时候,系统会生成一个随机数。通过随机数,产生私钥(Private Key);再通过私钥产生公钥(Public Key)和地址(Address)。其中,每个钥匙的重要性是不同的。私钥是保密的,就相当于你的密码,他是必须保密的,而且 ...
比特币的原理
哈喽大家好!我是小麦。最近想装一台电脑,然后看了眼显卡价格……嗯,还是很高。想到了导致今天这个局面的“罪魁祸首”——加密货币。今天看了李永乐老师两年前讲解比特币原理的视频,现在来做个笔记。
老规矩,视频链接:
李永乐老师Youtube:https://www.youtube.com/watch?v=g_fSistU3MQ
李永乐老师BiliBili:https://www.bilibili.com/video/av45247943
老高与小茉比特币:https://www.youtube.com/watch?v=7B-1vDFuYRk
老高与小茉区块链:https://www.youtube.com/watch?v=sjx_rpay9rk
以下文章可能有点深奥,读者可以在文章下方讨论,我会尝试给你们解答。
比特币是什么比特币也叫电子货币、数字货币,它由一名化名为中本聪的网络极客于2008年11月1日在网络上写的一篇文章《比特币:一种点对点的电子现金系统》所提出。这篇文这里提出一种构思:去中心化的电子记账系统。
去中心化的电子记账系统我们在和别人进行交易之后,需要检查我还有多少余额 ...
日记加密思路总结
日记加密的思路总结哈喽大家好,这是我们的第一篇文章。喜欢这类文章的小伙伴可以点击这里注册我们官网的账号,一起讨论哦! 也期待你们加入我们的Discord服务器一起聊天!
刚刚看了一下李永乐老师的日记加密算法,现在对视频所介绍的思路进行回忆并做总结。什么?你问视频链接在哪里?Okay,在这里:
Youtube链接:https://youtu.be/32xToL3JdU0
BiliBili链接:https://www.bilibili.com/video/BV11X4y1w77c
这篇文章不会涉及代码实现,纯粹讨论思路。后面我会在 Coding Challenge 里面尝试去吧这个加密功能写出来。所以现在我会根据老师所说,用我们生活中能用到的工具(白纸、美工刀)去演示这个加密过程。
制作密码盘现在来简单的用图文叙述加密及解密过程。首先,我们准备一张白纸,在纸上划分四个区域,然后在左上方划出 4 × 4 同样大小的方框
将小方框同样画在其余 3 个区域,然后在第一个区域上写上 1 ~ 16 个号码
然后用镜像的方法去填满其他三个区域。镜像的意思是以中间分割线用镜子的方式将左边的元素 ...