Unity 键盘控制人物移动——之输入方式代码的编写

14 篇文章 3 订阅
12 篇文章 4 订阅

键盘输入 控制人物移动

在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色,那么我们首先需要获取键盘输入。
以下提供两种方法获取键盘。
这里尽量通过截图解释让大家理解代码的含义。

GetInput

void FixedUpdate()
{
	Move();
}
private void Move()
{
	if (Input.GetKey(KeyCode.W))
	{
		//isMove();
		transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
	}

	if (Input.GetKey(KeyCode.S))
	{
		transform.Translate(Vector3.back * MoveSpeed * Time.deltaTime);
	}
	if (Input.GetKey(KeyCode.A))
	{
		transform.Translate(Vector3.left * MoveSpeed * Time.deltaTime);
	}
	if (Input.GetKey(KeyCode.D))
	{
		transform.Translate(Vector3.right * MoveSpeed * Time.deltaTime);
	}
}

如果在3D游戏开发中有移动的动画,那么可以在Move中加入动画运行的代码

    if (Input.GetKeyDown(KeyCode.W))
	{
		animator.SetBool("move", true);
	}
    
	if (Input.GetKeyUp(KeyCode.W))
	{
		animator.SetBool("move", false);
	}

InputManager

请看注释

public float moveSpeed = 10;

void FixedUpdate()
{
	Move();
}
public void Move()
{
    float h = Input.GetAxisRaw("Horizontal");
    transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);
    //这里的GetAxisRaw 的返回值是一个数字,←键或者a键为负,→键或者d键为正
    //									 ↑键或者w键为正,↓键或者s键为负
    //所以这里是将返回值乘入移动的位置中,为负就向反方向运动。

	float v = Input.GetAxisRaw("Vertical");
    transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);
    //			 (向上运动 *(正为上,负为反方向)*运动速度*Time.fixedDeltaTime,Space.World);
}

这里的设置是可以方便代码的编写,可以点击Unity左上角的Edio,打开Project Setting里面的Input,这里的前两个变量名就是代码中双引号里的名字,分别代表控制前后(vertical)和左右(Horizontal)的移动。
里面的left right a d 都是可以按的键,也就是说用此方法上下左右wsad都可以控制玩家移动。
注意:这里的Name必须和代码中双引号的一致,里面的一切都可以更改,根据自己的情况,除非必要无需更改。
在这里插入图片描述 在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值