码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Unity好插件之PlayMaker系列一上半部分】如何只用一个插件和一个脚本完成制作一个简易的游戏


    学习目标:

       对于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物品 

     那我们还需要一个脚本(本项目唯一的)来让背景滚动起来

    内容如下:(不懂的可以参考视频:【完结】Unity横版卷轴射击游戏制作教程 【满满的全是干货】 独立游戏 | 游戏开发_哔哩哔哩_bilibili【完结】Unity横版卷轴射击游戏制作教程 【满满的全是干货】 独立游戏 | 游戏开发共计42条视频,包括:01 项目创建 & 简易背景卷动、02 输入系统 & 玩家移动、03 视口 & 玩家移动范围、04 玩家移动优化、05 后处理 & 玩家子弹制作、06 玩家射击功能、07 对象池的原理与创建、08 对象池的应用、09 创建敌人、10 生命值系统、11 触发器与物理碰撞、12 角色血条、12.5 脚本架构、13 能量系统、14 闪避动作、15 敌人管理器、16 敌人波数显示、17 音效播放、18 场景加载器、19 得分系统、20 能量爆发、21 追踪子弹、22 子弹时间、23.1 制作暂停菜单、23.2 按钮动画、23.3 游戏暂停/恢复、23.4 按钮功能、23.5 UI输入控制、23.6 按钮音效、23.7 游戏状态、24.1 发射导弹、24.2 范围伤害、24.3 技能冷却、25.1 主菜单、25.2 游戏结束画面、25.3 计分画面、26 高分排行榜、27.1 Boss战·一、27.2 Boss战·二、28.1 战利品·一、28.2 战利品·二、游戏原型试玩等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1SB4y1w7VY?p=1&vd_source=c26ad86e8e81fdef9469ee7ce0003c67)

    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. public class BackgroundScroller : MonoBehaviour
    5. {
    6. private Material background;
    7. [SerializeField] private Vector2 scrollOffset;
    8. private void Awake()
    9. {
    10. background = GetComponent().material;
    11. }
    12. private void Update()
    13. {
    14. background.mainTextureOffset += scrollOffset * Time.deltaTime;
    15. }
    16. }

    没错就这么简单,只需要每帧去调用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来实现,那么等我吃完午饭,我们下期再见

  • 相关阅读:
    【开发心得】三步本地化部署llama3大模型
    一文看懂推荐系统:排序04:视频播放建模
    Go 语言的 Context 详解
    C++重新入门-string容器
    WMS仓库管理系统的应用场景有哪些?
    【重新定义matlab强大系列十五】非线性数据拟合和线性拟合-附实现过程
    elasticsearch分词器
    席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程!
    计算机毕业设计ssm+vue基本微信小程序的“香草屋”饮料奶茶点单小程序
    五、程序员指南:数据平面开发套件
  • 原文地址:https://blog.csdn.net/dangoxiba/article/details/126225033
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号