女仆高达 发表于 2019-5-28 10:29

(超能力论坛)想找个熟悉虚幻4和西佳佳的老师可以吗?

听说街霸5是虚幻4做的,那么像街霸这种搓招系统在虚幻4里是怎么靠蓝图实现的呢?比如按两下w加鼠标左键释放一个技能。新手自己摸索了半天都无法完美实现,想找个老师有偿指导一下。

慕容断月 发表于 2019-5-28 11:25

虚幻商城有搓招系统的蓝图卖,可以买一个研究下

w酱 发表于 2019-5-28 11:54

本帖最后由 w酱 于 2019-5-28 11:56 编辑

coyote time(输入缓冲)了解一下,
先写一个array还是stack随便什么,然后tick的时候把输入键的id塞进缓存里,然后判断帧计数
之前按了几个指令多少帧按下了要干什么后面响应事件就完事了
虽然我觉得这种跟种引擎没关系就是了.....

女仆高达 发表于 2019-5-28 12:54

natsu1211 发表于 2019-5-28 11:10
https://www.udemy.com/introduction-to-unreal-engine-4-ability-system/

感谢帮忙,可惜英文教程我看起来太吃力了

女仆高达 发表于 2019-5-28 12:56

慕容断月 发表于 2019-5-28 11:25
虚幻商城有搓招系统的蓝图卖,可以买一个研究下

大佬可以麻烦给个搜索的关键词吗?

女仆高达 发表于 2019-5-28 13:01

w酱 发表于 2019-5-28 11:54
coyote time(输入缓冲)了解一下,
先写一个array还是stack随便什么,然后tick的时候把输入键的id塞进缓存 ...

可以详细一点吗亲,新手刚学还望见谅

Lunamos 发表于 2019-5-28 13:03

就是个状态转移图,招数不多的话直接用数组+字符串匹配就可以,每一帧判断按键是否满足状态转换条件,满足就进下一状态,不满足就回到初始状态(比如不匹配、帧计数间隔过长等)。如果进入了出招的状态就出招,出完招回到初始状态。

女仆高达 发表于 2019-5-28 13:23

Lunamos 发表于 2019-5-28 13:03
就是个状态转移图,招数不多的话直接用数组+字符串匹配就可以,每一帧判断按键是否满足状态转换条件,满足 ...

谢谢,我尝试一下

w酱 发表于 2019-5-28 14:03

女仆高达 发表于 2019-5-28 13:01
可以详细一点吗亲,新手刚学还望见谅

我随便写点别的语言伪代码,对错也没研究,凑合看吧




    public class Test_BufferedInput
    {

      void onCreate()
      {
            clearBuffer();
      }

      

      void clearBuffer()
      {
            ctTimer = 0;
            for (int i = 0; i < 4; ++i) buffer = EInputBtnType.None;
      }

      void Push_Skill(string t)
      {
                //blabla...放点什么技能然后处理一下关掉状态什么的
      }
      
      public bool bCharacterReady = true;
      public bool bCharacterCanAttack = true;
      private EInputBtnType[] buffer = new EInputBtnType;

      private int ctTimer = 0;

      void onTick()
      {
            if (bCharacterReady) checkActionsOnTIck();
      }
      //逐帧检查状态
      void checkActionsOnTIck()
      {
            //如果能放技能
            if (bCharacterCanAttack)
            {
                //当前帧按下了W
                if (InputProcessor.IsPressed(EInputBtnType.BTN_W))
                {
                  buffer = buffer;
                  buffer = buffer;
                  buffer = buffer;
                  buffer = EInputBtnType.BTN_W;
                }
                //当前帧按下了鼠标左键
                else if (InputProcessor.IsPressed(EInputBtnType.BTN_LMB))
                {
                  buffer = buffer;
                  buffer = buffer;
                  buffer = buffer;
                  buffer = EInputBtnType.BTN_LMB;
                }
                //blabla...
                //如果10帧以内有按键输入并且符合 w + w + lmb
                if (ctTimer < 10)
                {
                  if (buffer == EInputBtnType.BTN_LMB && buffer == EInputBtnType.BTN_W &&
                        buffer == EInputBtnType.BTN_W)
                  {
                        //放技能
                        Push_Skill("skill_w+lmb");
                        ctTimer = 10;
                        for (int i = 0; i < 4; ++i) buffer = EInputBtnType.None;
                  }
                  else
                  {
                        //按键不是这个组合
                        //blabla...
                  }
                }
                //按键超时,清空缓冲
                else if (buffer != EInputBtnType.None)
                {
                  ctTimer = 0;
                  for (int i = 0; i < 4; ++i) buffer = EInputBtnType.None;
                }
                ctTimer++;
            }
            //如果不能放技能,清空
            else
            {
                if (ctTimer > 0)
                {
                  ctTimer = 0;
                  for (int i = 0; i < 4; ++i) buffer = EInputBtnType.None;
                }
                //blabla...
            }
      }
    }

zag 发表于 2019-5-28 14:20

本帖最后由 zag 于 2019-5-28 14:21 编辑

以前论坛里有人贴过分析街霸的指令系统的网页,

简单来说就是对于每一个角色的每一个技能你都需要有一个buffer(具体实现方法可以不同),

每个渲染循环你对输入进行处理的时候,根据技能的设置,也就是指令间无效指令的宽容程度等对buffer进行填充,最后释放先达到有效的技能

要实现街霸5的效果稍微有些复杂就是了

慕容断月 发表于 2019-5-28 14:49

本帖最后由 慕容断月 于 2019-5-28 14:52 编辑

女仆高达 发表于 2019-5-28 12:56
大佬可以麻烦给个搜索的关键词吗?
https://www.unrealengine.com/marketplace/input-buffer

拿好

之前说的应该是这个输入预存的插件

zxlice 发表于 2019-5-28 18:50

和引擎毫无关系吧

女仆高达 发表于 2019-5-29 09:46

w酱 发表于 2019-5-28 14:03
我随便写点别的语言伪代码,对错也没研究,凑合看吧

太感谢了!试着用你的方法去套用一下蓝图,真的帮助很大

女仆高达 发表于 2019-5-29 09:46

慕容断月 发表于 2019-5-28 14:49
https://www.unrealengine.com/marketplace/input-buffer

拿好


谢谢大佬,这个正是我需要的
页: [1]
查看完整版本: (超能力论坛)想找个熟悉虚幻4和西佳佳的老师可以吗?