输入控制

1.创建一个游戏工程, 命名为InputControl

2.在Project视图中创建3个文件夹, Scene文件夹、Resources文件夹和Script文件夹

3.将当前场景保存为GameScene

4.创建ComputerInputControl游戏脚本

5.在Hierarchy视图中创建一个空的GameObject, 命名为GameManager,并把ComputerInputControl绑定在该对象上

6.玩家点击鼠标左键开火、按住键盘W键前进等都属于输入控制。输入控制是游戏开发中非常重要的一个环节。
7.计算机输入
(1).计算机设备的输入指的是仅对应键盘和鼠标的输入检测。一般单项检查分为3类:按下、按住和抬起。
(2).KeyCode是由Event.keyCode返回的, 用于键盘事件的原始键码。

(3).代码清单

using UnityEngine;

public class ComputerInputControl : MonoBehaviour
{
	void Update () 
	{
		if(Input.GetKeyDown(KeyCode.A))
		{
			Debug.Log ("按下键盘A键");
		}

		if(Input.GetKey(KeyCode.A))
		{
			Debug.Log ("按住键盘A键");
		}

		if(Input.GetKeyUp(KeyCode.A))
		{
			Debug.Log ("抬起键盘A键");
		}

		if(Input.GetKeyDown(KeyCode.Space))
		{
			Debug.Log ("按下键盘空格键");
		}

		if(Input.GetKey(KeyCode.Space))
		{
			Debug.Log ("按住键盘空格键");
		}

		if(Input.GetKeyUp(KeyCode.Space))
		{
			Debug.Log ("抬起键盘空格键");
		}

		if(Input.GetMouseButtonDown(0))
		{
			Debug.Log ("按下鼠标左键");
		}

		if(Input.GetMouseButton(0))
		{
			Debug.Log ("按住鼠标左键");
		}

		if(Input.GetMouseButtonUp(0))
		{
			Debug.Log ("抬起鼠标左键");
		}

		if(Input.GetMouseButtonDown(1))
		{
			Debug.Log ("按下鼠标右键");
		}

		if(Input.GetMouseButton(1))
		{
			Debug.Log ("按住鼠标右键");
		}

		if(Input.GetMouseButtonUp(1))
		{
			Debug.Log ("抬起鼠标右键");
		}

		if(Input.GetMouseButtonDown(2))
		{
			Debug.Log ("按下鼠标滚轮键");
		}

		if(Input.GetMouseButton(2))
		{
			Debug.Log ("按住鼠标滚轮键");
		}

		if(Input.GetMouseButtonUp(2))
		{
			Debug.Log ("抬起鼠标滚轮键");
		}
	}
}

8.自定义输入

(1).键盘鼠标输入检测十分局限, 一般仅用于计算机等设备。自定义输入可以设置输入类型名称、输入设备类型、输入键位等参数, 从而方便的解决了计算机与家用机的输入兼容。

(2).微软的xbox


(3).任天堂游戏公司的switch


(4).输入设置界面: 菜单栏 -> Edit -> Project Settings -> Input打开输入设置界面

 

(5).展开Horizontal输入项, 我们发现有2个Horizontal项, 这是因为键盘鼠标是单独的一套键,而手柄则是另一套。

 


(6).在Hierarchy视图中的GameManame游戏对象下,新建一个Cube立方体。


(7).新建一个HorizontalInput.cs脚本, 并绑定到Cube上。

(8).代码清单

using UnityEngine;

public class HorizontalInput : MonoBehaviour 
{
	void Update () 
	{
		float horizontalValue = Input.GetAxis ("Horizontal");
		if(horizontalValue != 0)
		{
			transform.position += new Vector3 (horizontalValue*Time.deltaTime, 0, 0);
		}

		float verticalValue = Input.GetAxis ("Vertical");
		if(verticalValue != 0)
		{
			transform.position += new Vector3 (0, verticalValue*Time.deltaTime, 0);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值