Unity3D 之连按移动加速
上代码:
效果是连续按W后,加速移动
为物体添加个拖拽效果,方便看运动轨迹。
将下面的脚本绑定到移动的物体上。
不过这里有一点很重要的需要去注意就是该方法不能放在 void FixedUpdate() 中,否则无效
using UnityEngine; using System.Collections; public class Move : MonoBehaviour { public float timelost = 0; // Use this for initialization public float speed = 1f; void Awake() { //animator = this.GetComponent<Animator>(); } // Update is called once per frame void Update() { float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); if (Input.GetKeyDown(KeyCode.W)) // if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.S)) { if ((Time.time - timelost) < 0.5f)///0.5秒之内按下有效 { Debug.LogError("加速"); speed = 5.0f; } else { Debug.LogError("--------"); speed = 1f; } timelost = Time.time; } Debug.LogError("》》》》》》》》》》》》》》》"); if (Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1) { Vector3 targetDir = new Vector3(-h, 0, -v); //transform.LookAt(targetDir + transform.position); transform.Translate(targetDir * speed * Time.deltaTime); } //按键的取值,以虚拟杆中的值为优先 //if (Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1) //{ // // Debug.LogError("h" + h); // //Debug.LogError("v" + v); // //animator.SetBool("Walk", true); // Vector3 targetDir = new Vector3(-h, 0,-v); // //transform.LookAt(targetDir + transform.position); // transform.Translate(targetDir * speed *Time.deltaTime); //} } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本