学习目标:

   对于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.

unity 的 playmaker unity的playmaker如何安装_PlayMaker

https://assetstore.unity.com/packages/tools/visual-scripting/playmaker-368

unity 的 playmaker unity的playmaker如何安装_PlayMaker_02

就感觉这个收藏量是其它插件永远无法超越的,下面列出他的介绍 

unity 的 playmaker unity的playmaker如何安装_PlayMaker_03

反正听起来就挺牛逼的,大概意思是我的动作的C#脚本,你可以在可视化界面上调用起来它们,而且更高效,需要的代码?不存在!

以下列出官网的功能:

unity 的 playmaker unity的playmaker如何安装_游戏_04

反正是他说的很多我还不到,毕竟刚入门,


 PlayMaker究竟有多火,B站竟然能搜到有关PlayMaker的教学,于是我看完一个基础入门的,对这个功能大致了解了,但还是推荐大家去Youtube网上看别人制作商专业讲解,而且你们不要挑太老的视频看,都什么年代还在看15年左右的视频,贴个连接:使用Unity與Playmaker做遊戲_哔哩哔哩_bilibili,根据这位省港澳讲师的讲解,于是我跟了一遍他的视频后也尝试自己做了一个。

事不宜迟,我们开始吧

学习内容:

  首先我们需要在Asset Store买一个PlayMaker($65美刀啊血马贵,建议等活动打折的时候再买)然后你就可以看到在Uniyt里面的PackageManager -> My Asset里面找到他(这不用我教了⑧)Import过后

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_05

点击第一个Install PlayMaker 然后看左上角的界面有个Editor的,点他就可以出现一个界面了

unity 的 playmaker unity的playmaker如何安装_游戏_06

 我们把他固定到左下角。

接下来我们还需要资源,首先在Github上先搜索flappy brid,我们找到有关这个游戏资源,但我到最后只找到一张背景图,而且那些鸟都是3D的长的巨抽象,还有个傻*放一张鬼图在资源里给老子吓死了。

就在我苦思冥想之际,我突然想到一个游戏Up主自制的魔改flappy brid,我就想OKOK,然后就去下载它的资源,用Asset Studio反编译提取他的Unity文件,果然找到好几只鸟,然后提取出来后,这些就是我找到的游戏原图

unity 的 playmaker unity的playmaker如何安装_c#_07

反正随便用几张也够用了。

我们继续回到Unity

我们先把游戏界面调成9:16让它有手机竖屏的感觉,然后创建一个3D Objet -> Quad名字叫Background吧,然后回到把背景的Wrap Mode改成Repeat

unity 的 playmaker unity的playmaker如何安装_PlayMaker_08

unity 的 playmaker unity的playmaker如何安装_游戏_09

创建一个Material然后把图片作为纹理Texture2D传入进去,

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_10

别忘了还要把材质球赋给我们创建的这个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就是控制在屏幕上你设置的显示

unity 的 playmaker unity的playmaker如何安装_unity_11

unity 的 playmaker unity的playmaker如何安装_游戏_12

而我们可以通过状态机来实现玩家控制

名字就叫飞行控制吧

unity 的 playmaker unity的playmaker如何安装_PlayMaker_13

 刚开始有个名字叫State1的这就是开始运行的地方,我们在State把他改名。

unity 的 playmaker unity的playmaker如何安装_游戏_14

 试想一下,我们要让鸟向上飞,是不是要按键输入,然后设置y轴方向的速度,那我们需要两个Action动作,点击下面的Action Browser

unity 的 playmaker unity的playmaker如何安装_PlayMaker_15

 

unity 的 playmaker unity的playmaker如何安装_unity_16

 然后又会弹出一个界面,这个界面是PlayMaker包含的全部动作合集。

那我们先检测键盘输入的。只需要在上面搜索

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_17

回到State你就会发现卧槽我怎么多了一个动作

unity 的 playmaker unity的playmaker如何安装_c#_18

  Key你点开看到Space,意思是我按下键盘的空格就会触发事件,你问我这个向上飞的时间是嘛,这个就是第三个Events的事了,我们在EVnets下创建一个事件

unity 的 playmaker unity的playmaker如何安装_PlayMaker_19

 那既然有事件了肯定要有监听事件的对象了,如果你没有那么就会报错了,这时候我们右键点击

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_20

下面就会多出一行名字叫向上飞的,这时候我们就按住Crtl把箭头往一处拖再松开,就会多了第二个状态State,在这个状态我们来处理我们监听到的事件,老规矩ActionBrowser搜索设置速度的

unity 的 playmaker unity的playmaker如何安装_c#_21

 

Space表示的你的坐标系是世界的还是自身的)

  我们还可以给鸟增加一个向上的旋转看上去是努力往上飞的,

只需要每次触发事件的时候把他的Z轴改成15-30度之间即可,

unity 的 playmaker unity的playmaker如何安装_c#_22

 不要以为这就完了,因为如果你仅仅只能触发一次事件,却不能重新循环到刚开始的状态,这时候我们同样需要创建一个事件作为跳跃结束的时候调用,

unity 的 playmaker unity的playmaker如何安装_unity_23

在松开跳跃键的时候我们就回去

unity 的 playmaker unity的playmaker如何安装_PlayMaker_24

 

unity 的 playmaker unity的playmaker如何安装_PlayMaker_25

于是我们就可以让brid飞飞飞。

接下来我们来创造一下水管吧,

把资源拉出去,

unity 的 playmaker unity的playmaker如何安装_unity_26

 

unity 的 playmaker unity的playmaker如何安装_c#_27

 这是我设置的上面和下面的水管,我们可以让他们一开始生成的时候随机高度,这时候也可用动作来实现,

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_28

unity 的 playmaker unity的playmaker如何安装_游戏_29

这里为什么Set Position 2D的Space是Self你后面会知道的,我们的Min和Max需要你自己动手自己测量一下多高他才合理不会露馅 

 最后我们创建一个空对象Tube作为它们两个的父物体,这就是为什么Set Position 2D的Space是Self

unity 的 playmaker unity的playmaker如何安装_游戏_30

 Ok我们也给他创建一个PlayMaker,大伙先想想,刚开始是不是要让水管在屏幕外生成,那我们在连接Start这个State上给它设置一个位置

unity 的 playmaker unity的playmaker如何安装_c#_31

 而且我们要让水管朝着玩家的方向移动,因为玩家默认的X和Z轴方向是没有速度的,朝着玩家方向移动从视觉上看玩家是向前飞的,

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_32

你已经看到我有个自动清除水管的State状态,因此我们设置:在移除屏幕外的时候,我们需要Destroy掉,这时候Variables就派上用场了,

unity 的 playmaker unity的playmaker如何安装_PlayMaker_33

  

unity 的 playmaker unity的playmaker如何安装_PlayMaker_34

我们在底下创建一个变量名以及它的类型,这样就好,回到State上,我们为此创建一个Get Postion动作,并且勾选Every Frame表示每帧调用这个动作

unity 的 playmaker unity的playmaker如何安装_游戏_35

 最后我们需要一个Float Compare浮点数比较器,当值1小于值2的时候就触发事件,因此我们需要创建一个事件先

unity 的 playmaker unity的playmaker如何安装_PlayMaker_36

unity 的 playmaker unity的playmaker如何安装_PlayMaker_37

 老规矩右键点击事件名然后按住Cril拖出来,这时候我们处理这个事件

,只需要销毁这个游戏对象即可 

 

unity 的 playmaker unity的playmaker如何安装_unity 的 playmaker_38

我们开始游戏试玩一下我们已经实现的功能:

unity 的 playmaker unity的playmaker如何安装_PlayMaker_39

unity 的 playmaker unity的playmaker如何安装_游戏_40

 (这个计分器大伙别急,我后面才会讲到)

  那么这期就先到这里了,下一期我会接着制作GameManger控制玩家旋转以及UI显示数字,而这些都是用PlayMaker来实现,那么等我吃完午饭,我们下期再见