zoukankan      html  css  js  c++  java
  • Unity 简单实现一个复制动作的分身

    想要实现的效果

    参考蔚蓝中的分身,分身会复制玩家的操作,延迟执行。

    分析

    操作可以分解成 命令输入 和 效果输出 两部分。

    分身的操作,可以想象成延迟操作,玩家命令输入N秒后分身才执行效果输出。

    所以利用协程简单实现输入输出的延迟效果,

    Update中编写输入,获取输入后开启协程,协程开始延迟N秒,然后执行输出效果。

    脚本(挂在分身上)

    private void Update()
        {
         //获取输入
    float horizontal = Input.GetAxisRaw("Horizontal"); float vertical = Input.GetAxisRaw("Vertical");
         
         //开启协程(将获取到的输入传给协程方法) StartCoroutine(Move(
    20, new Vector2(horizontal, vertical))); } public IEnumerator Move(float moveSpeed, Vector2 vector2) { yield return new WaitForSeconds(1);  //延迟1秒

    //根据输入进行输出效果 Vector2 moveDirection
    = vector2.normalized; gameObject.GetComponent<Rigidbody2D>().velocity = moveDirection * moveSpeed; }

    简单效果展示

     扩展

    输入操作不仅仅局限于移动指令,可扩展一些其他动作(开火等),只需要将输出延迟即可。

    在执行分身的协程前进行判断,避免开启大量协程。

  • 相关阅读:
    AutoMapper 使用实践
    项目重构之路
    Xamarin对Visual Studio用户免费 Xamarin SDK将开源
    php的文件上传及下载,附带显示文件及目录
    SMARTY静态缓存
    SMARTY的简单实例写法
    SMARTY的知识
    wampserver的使用配置
    php权限管理
    phpcms企业站的一些知识
  • 原文地址:https://www.cnblogs.com/KingR/p/12981218.html
Copyright © 2011-2022 走看看