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; }

简单效果展示

 扩展

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

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

原文地址:https://www.cnblogs.com/KingR/p/12981218.html