为了可以直接复制代码,我这里会将所有的代码都放在这里
注意:本文不包括animator系统,只包含如何让角色移动
一直接读取键盘的输入移动
请确保此脚本绑定在精灵上
using System.Collections;
using System.Collections.Generic;
using UnityEngine.InputSystem;//记得添加
using UnityEngine;
public class Player : MonoBehaviour
{
void Start()
{
}
// Update is called once per frame
void Update()
{//----------------------------------直接读取键盘的输入移动-------------------------------------------
//可以自由的控制人物运动,可以用在理想空间下,不能用于动作游戏(因为不能斜向移动)且并不帧数独立
float horizontal = 0.0f;//创建了一个float变量horizontal
float vertical = 0.0f;
if (Keyboard.current.leftArrowKey.isPressed) //if语句检测键盘输入
{
horizontal = -1.0f;//根据键盘输入改变变量的值
}
else if (Keyboard.current.rightArrowKey.isPressed)
{
horizontal = 1.0f;
}
else if (Keyboard.current.upArrowKey.isPressed)
{
vertical= 1.0f;
}
else if (Keyboard.current.downArrowKey.isPressed)
{
vertical = -1.0f;
}
Vector2 position = transform.position;//创建一个v2变量来存放从当前物体的transform组件中获取的位置信息
position.x = position.x+0.1f*horizontal;//改变变量中的x轴大小
position.y = position.y + 0.1f * vertical;//改变变量中的y轴大小
transform.position = position;//将改变后的变量再赋给transform组件中的position
}
}
二使用输入系统包(input Actions)控制玩家移动
首先,定义一个InputAction
将以下指令添加到脚本类的开头,在第一个花括号内:
public InputAction LeftAction;
其次,在unity中找到此脚本,点击右侧的齿轮按钮,选择Value
然后点击旁边的加号,选择Add Up/Down/Left/Right Composite
变成了这样
接下来我们要对这四个方向进行按键绑定,双击其中一项
点击Path旁边的方框(也是T按钮旁边的),变成这样
点击搜索框旁边的listen方框(我这里因为显示问题没有显示全)后按下你想要绑定的按键
我想绑定的是up方向所以按了向上箭头,双击变蓝的这块,绑定成功
最后,在start方法中添加一条指令来启用MoveAction,并在update方法中补充代码
全代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.InputSystem;
using UnityEngine;
using static UnityEditor.Searcher.SearcherWindow.Alignment;
public class Player : MonoBehaviour
{
public InputAction MoveAction;//创建一个InputAction变量,创建引用
void Start()
{
MoveAction.Enable();//启用MoveAction输入动作,所有的动作都是默认禁用的,记得启用
}
// Update is called once per frame
void Update()
{
//--------------------------使用输入系统包(input Actions)控制玩家移动----------------------------
Vector2 move = MoveAction.ReadValue<Vector2>();
Vector2 position = (Vector2)transform.position + move * 0.1f;
transform.position = position;
}
}
咱们的player就可以动起来了