(Unity2d入门)01玩家角色的移动

为了可以直接复制代码,我这里会将所有的代码都放在这里

注意:本文不包括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就可以动起来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值