您的位置:首页 > 移动开发 > Unity3D

Unity3D 之连按移动加速

2016-08-11 20:38 155 查看
上代码:

效果是连续按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);

//}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: