Unity3D 之连按移动加速

时间:2024-04-29 23:14:53

上代码:

效果是连续按W后,加速移动

为物体添加个拖拽效果,方便看运动轨迹。

Unity3D 之连按移动加速

将下面的脚本绑定到移动的物体上。

不过这里有一点很重要的需要去注意就是该方法不能放在 void FixedUpdate() 中,否则无效

using UnityEngine;
using System.Collections; public class Move : MonoBehaviour { public float timelost = ;
// 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, , -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); //} }
}