【译】如何制作生命条
如何制作生命条

我有一个想法,我想有一个透明的背景,一个自定义的前景,拥有选择颜色的能力,并自定义大小。然后我开始思考有没有其他相关的项目可以使用预制的管理。最好还是把生命值脚本加进去,这将更易于管理。我选择了与格里奇·加登合作,因为这似乎是最合适不过的,我可以很容易地使用任何其他项目。
在僵尸逃亡项目中,我们获得了广泛的认可。这似乎是使该项目更简单的方法。我建立了一个次层结构,目的是建立在玩家之间传递信息的松散耦合系统。由于玩家数量不足,一则广播消息并没有十分密集的资源。
接下来是原型脚本。正如前文提到的,除了生命条脚本外,我想要使用以前使用过的生命值脚本。我希望能够设置多种颜色,一个用于前景和另一个用于背景。我的面板如下图所示:
对我来说最大的挑战是如何加入颜色。我决定在运行时使用2D纹理,什么是2d文理呢,下面举个例子。比如纹理是1像素,这意味着当你将它应用到对象的时候,对象将呈现一个颜色。我很享受研究这种纹理,可能是未来代码做出的纹理。
1 2 3 4 | mainTexture = new Texture2D(1, 1); mainTexture.SetPixel(0, 0, mainColor); mainTexture.wrapMode = TextureWrapMode.Repeat; mainTexture.Apply(); |
有了纹理,你只需要将它连接到SpriteRenderer组件,操作如下:
1 2 3 | Rect unit = new Rect(0, 0, 1, 1); SpriteRenderer sr = gameObject.GetComponent(); sr.sprite = Sprite.Create(backgroundTexture, unit, Vector3.zero); |
除此之外,我先画了背景,然后制作前景。最后我更新了基于生命值的生命百分比,确保该值处在0与1之间。
为了通知玩家他的游戏人物已经死亡,我使用SendMessageUpwards("Die")在画面加入了“死亡”的信息。通过BroadcastMessage ("SubtractHealth",10)显示“生命值减少10”,玩家也能够获悉他正在减少的血量。之后我做了一些测试和修改,制作了最终了版本,我还打算将它用于其它用途。
关于作者:
本·皮尔森是业余无线电爱好者博客KD7UIY的作者以及谷歌游戏、应用开发者,他计划在那里发表一些由gamedev.tv带来灵感的游戏。他从小就是程序员,最近才开始从事游戏编程。他已经完成了完全统一开发课程,正在研究完全搅拌开发课程,统一游戏物理和程序生成课程。他希望不久就能开始“不真实课程”,在推特上关注他@KD7UIY。