学习目标:
对于PlayMaker,笔者在很早期学习中就有意识到这个插件被大伙一整乱吹,当时我觉得做个游戏肯定需要海量的脚本这PlayMaker一看就不可靠,但最近得知我贼喜欢的游戏《空洞骑士》里面大量的逻辑事件(例如敌人的行为)都是由PlayMaker制作的,于是心生好奇去Asset Store看了一下,Playmaker | Visual Scripting | Unity Asset StoreGet the Playmaker package from Hutong Games LLC and speed up your game development process. Find this & other Visual Scripting options on the Unity Asset Store.https://assetstore.unity.com/packages/tools/visual-scripting/playmaker-368
就感觉这个收藏量是其它插件永远无法超越的,下面列出他的介绍
反正听起来就挺牛逼的,大概意思是我的动作的C#脚本,你可以在可视化界面上调用起来它们,而且更高效,需要的代码?不存在!
以下列出官网的功能:
反正是他说的很多我还不到,毕竟刚入门,
PlayMaker究竟有多火,B站竟然能搜到有关PlayMaker的教学,于是我看完一个基础入门的,对这个功能大致了解了,但还是推荐大家去Youtube网上看别人制作商专业讲解,而且你们不要挑太老的视频看,都什么年代还在看15年左右的视频,贴个连接:使用Unity與Playmaker做遊戲_哔哩哔哩_bilibili,根据这位省港澳讲师的讲解,于是我跟了一遍他的视频后也尝试自己做了一个。
事不宜迟,我们开始吧
学习内容:
首先我们需要在Asset Store买一个PlayMaker($65美刀啊血马贵,建议等活动打折的时候再买)然后你就可以看到在Uniyt里面的PackageManager -> My Asset里面找到他(这不用我教了⑧)Import过后
点击第一个Install PlayMaker 然后看左上角的界面有个Editor的,点他就可以出现一个界面了
我们把他固定到左下角。
接下来我们还需要资源,首先在Github上先搜索flappy brid,我们找到有关这个游戏资源,但我到最后只找到一张背景图,而且那些鸟都是3D的长的巨抽象,还有个傻*放一张鬼图在资源里给老子吓死了。
就在我苦思冥想之际,我突然想到一个游戏Up主自制的魔改flappy brid,我就想OKOK,然后就去下载它的资源,用Asset Studio反编译提取他的Unity文件,果然找到好几只鸟,然后提取出来后,这些就是我找到的游戏原图
反正随便用几张也够用了。
我们继续回到Unity
我们先把游戏界面调成9:16让它有手机竖屏的感觉,然后创建一个3D Objet -> Quad名字叫Background吧,然后回到把背景的Wrap Mode改成Repeat
创建一个Material然后把图片作为纹理Texture2D传入进去,
别忘了还要把材质球赋给我们创建的这个3D物品
那我们还需要一个脚本(本项目唯一的)来让背景滚动起来
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BackgroundScroller : MonoBehaviour
{
private Material background;
[SerializeField] private Vector2 scrollOffset;
private void Awake()
{
background = GetComponent<Renderer>().material;
}
private void Update()
{
background.mainTextureOffset += scrollOffset * Time.deltaTime;
}
}
没错就这么简单,只需要每帧去调用material.mainTexureOffset,而且似乎这个也可以用PlayMaker来实现,只是我不知道而已。
那我们还控制玩家的移动吧。
首先把玩家图片拖到正中间,然后给它一个PlayMaker的脚本(或者直接拖拽到PlayMaker界面)
这样的话你会发现游戏对象旁边多了一个玩字,而GUI就是控制在屏幕上你设置的显示
而我们可以通过状态机来实现玩家控制
名字就叫飞行控制吧
刚开始有个名字叫State1的这就是开始运行的地方,我们在State把他改名。
试想一下,我们要让鸟向上飞,是不是要按键输入,然后设置y轴方向的速度,那我们需要两个Action动作,点击下面的Action Browser
然后又会弹出一个界面,这个界面是PlayMaker包含的全部动作合集。
那我们先检测键盘输入的。只需要在上面搜索
回到State你就会发现卧槽我怎么多了一个动作
Key你点开看到Space,意思是我按下键盘的空格就会触发事件,你问我这个向上飞的时间是嘛,这个就是第三个Events的事了,我们在EVnets下创建一个事件
那既然有事件了肯定要有监听事件的对象了,如果你没有那么就会报错了,这时候我们右键点击
下面就会多出一行名字叫向上飞的,这时候我们就按住Crtl把箭头往一处拖再松开,就会多了第二个状态State,在这个状态我们来处理我们监听到的事件,老规矩ActionBrowser搜索设置速度的
Space表示的你的坐标系是世界的还是自身的)
我们还可以给鸟增加一个向上的旋转看上去是努力往上飞的,
只需要每次触发事件的时候把他的Z轴改成15-30度之间即可,
不要以为这就完了,因为如果你仅仅只能触发一次事件,却不能重新循环到刚开始的状态,这时候我们同样需要创建一个事件作为跳跃结束的时候调用,
在松开跳跃键的时候我们就回去
于是我们就可以让brid飞飞飞。
接下来我们来创造一下水管吧,
把资源拉出去,
这是我设置的上面和下面的水管,我们可以让他们一开始生成的时候随机高度,这时候也可用动作来实现,
这里为什么Set Position 2D的Space是Self你后面会知道的,我们的Min和Max需要你自己动手自己测量一下多高他才合理不会露馅
最后我们创建一个空对象Tube作为它们两个的父物体,这就是为什么Set Position 2D的Space是Self
Ok我们也给他创建一个PlayMaker,大伙先想想,刚开始是不是要让水管在屏幕外生成,那我们在连接Start这个State上给它设置一个位置
而且我们要让水管朝着玩家的方向移动,因为玩家默认的X和Z轴方向是没有速度的,朝着玩家方向移动从视觉上看玩家是向前飞的,
你已经看到我有个自动清除水管的State状态,因此我们设置:在移除屏幕外的时候,我们需要Destroy掉,这时候Variables就派上用场了,
我们在底下创建一个变量名以及它的类型,这样就好,回到State上,我们为此创建一个Get Postion动作,并且勾选Every Frame表示每帧调用这个动作
最后我们需要一个Float Compare浮点数比较器,当值1小于值2的时候就触发事件,因此我们需要创建一个事件先
老规矩右键点击事件名然后按住Cril拖出来,这时候我们处理这个事件
,只需要销毁这个游戏对象即可
我们开始游戏试玩一下我们已经实现的功能:
(这个计分器大伙别急,我后面才会讲到)
那么这期就先到这里了,下一期我会接着制作GameManger控制玩家旋转以及UI显示数字,而这些都是用PlayMaker来实现,那么等我吃完午饭,我们下期再见