创建移动物体

一开始我们新建了项目之后,在空白处右击找到Cube

unity2d 长度可变的箭头 unity2d方向键控制移动_小键盘


为了方便我们在下面的project栏创建一个文件夹(GameScript)

unity2d 长度可变的箭头 unity2d方向键控制移动_小键盘_02

之后我们开始创建移动脚本,同样的在project栏右击找到C# Script,创建后命名为Cubemove

unity2d 长度可变的箭头 unity2d方向键控制移动_小键盘_03

开始编写代码

移动脚本

第一种

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cubemove : MonoBehaviour
{
    public float m_speed = 10f;//这个定义为公有变量,方便之后修改物体速度
    // Start is called before the first frame update
    void Start()//这个函数是会在一开始就游戏调用的,
    {
        
    }

    // Update is called once per frame
    void Update()//这个函数会在每帧调用
    {
        if(Input.GetKey(KeyCode.UpArrow))//如果按下了↑
        {
            this.transform.Translate(new Vector3(m_speed * Time.deltaTime,0,0));//这个物体会在X轴上位移m_speed * Time.deltaTime
        }
        if (Input.GetKey(KeyCode.DownArrow))//如果按下了↓
        {
            this.transform.Translate(new Vector3(-1 * m_speed * Time.deltaTime, 0, 0));//这个Time.deltaTime是一个很小的值大概等于1/帧数
        }
        if (Input.GetKey(KeyCode.RightArrow))//如果按下了→
        {
            this.transform.Translate(new Vector3(0, 0,-1 * m_speed * Time.deltaTime));//不加上这个Time.deltaTime,会速度过快
        }
        if (Input.GetKey(KeyCode.LeftArrow))//如果按下了←
        {
            this.transform.Translate(new Vector3(0, 0,  m_speed * Time.deltaTime));//不加那就是每帧10个单位的速度,加了就是每秒10个单位
        }
    }
}

第二种

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cubemove : MonoBehaviour
{
    public float m_speed = 10f;//这个定义为公有变量,方便之后修改物体速度
    public KeyCode m_upkey = KeyCode.UpArrow;
    public KeyCode m_downkey = KeyCode.DownArrow;
    public KeyCode m_rightkey = KeyCode.RightArrow;
    public KeyCode m_leftkey = KeyCode.LeftArrow;//按键也公有化,方便以后修改
    // Start is called before the first frame update
    void Start()//这个函数是会在一开始就游戏调用的,
    {
        
    }
    void Update()//这个函数会在每帧调用
    {
        if(Input.GetKey(m_upkey))
        {
            this.transform.Translate(new Vector3(m_speed * Time.deltaTime,0,0));//这个物体会在X轴上位移m_speed * Time.deltaTime
        }
        if (Input.GetKey(m_downkey))
        {
            this.transform.Translate(new Vector3(-1 * m_speed * Time.deltaTime, 0, 0));//这个Time.deltaTime是一个很小的值大概等于1/帧数
        }
        if (Input.GetKey(m_rightkey))
        {
            this.transform.Translate(new Vector3(0, 0,-1 *  m_speed * Time.deltaTime));//不加上这个Time.deltaTime,会速度过快
        }
        if (Input.GetKey(m_leftkey))
        {
            this.transform.Translate(new Vector3(0, 0,  m_speed * Time.deltaTime));//不加那就是每帧10个单位的速度,加了就是每秒10个单位
        }
    }
}

挂载脚本

我这里还是使用第一种方式来演示

unity2d 长度可变的箭头 unity2d方向键控制移动_游戏开发_04

unity2d 长度可变的箭头 unity2d方向键控制移动_游戏_05

按住你刚刚写的脚本拖动到Cube上,即可完成挂载。

unity2d 长度可变的箭头 unity2d方向键控制移动_游戏开发_06

挂载之后点击Cube,我们可以看到右侧出现了你刚刚写的脚本,并且有一栏是你的速度,因为是公有的所以会在这里显示出来

开始测试

按下Ctrl+p ,开始测试,

可能出现的疑问

1.在脚本里面为什么右移是向Z轴的负方向移动

unity2d 长度可变的箭头 unity2d方向键控制移动_unity3d_07

2.第二种脚本有什么好处呢?

好处:在以后做修改热键的时候大有用处,如果按照第一种的方法来编写的化几乎就是不可改的了。

学习笔记

1.所有按键:
值        对应键
 Backspace     退格键
 Delete      Delete键
 Tab        TabTab键
 Clear  Clear键
 Return  回车键
 Pause  暂停键
 Escape  ESC键
 Space  空格键
 Keypad0  小键盘0
 Keypad1  小键盘1
 Keypad2  小键盘2
 Keypad3  小键盘3
 Keypad4  小键盘4
 Keypad5  小键盘5
 Keypad6  小键盘6
 Keypad7  小键盘7
 Keypad8  小键盘8
 Keypad9  小键盘9
 KeypadPeriod 小键盘“.”
 KeypadDivide 小键盘“/”
 KeypadMultiply小键盘“*”
 KeypadMinus 小键盘“-”
 KeypadPlus 小键盘“+”
 KeypadEnter 小键盘“Enter”
 KeypadEquals 小键盘“=”
 UpArrow  方向键上
 DownArrow 方向键下
 RightArrow 方向键右
 LeftArrow 方向键左
 Insert  Insert键
 Home  Home键
 EndEnd键
 PageUp  PageUp键
 PageDown PageDown键
 F1功能键F1
 F2功能键F2
 F3功能键F3
 F4功能键F4
 F5功能键F5
 F6功能键F6
 F7功能键F7
 F8  功能键F8
 F9  功能键F9
 F10  功能键F10
 F11  功能键F11
 F12  功能键F12
 F13  功能键F13
 F14  功能键F14
 F15  功能键F15
 Alpha0 按键0
 Alpha1 按键1
 Alpha2 按键2
 Alpha3 按键3
 Alpha4 按键4
 Alpha5 按键5
 Alpha6 按键6
 Alpha7 按键7
 Alpha8 按键7
 Alpha9 按键9
 Exclaim ‘!’键
 DoubleQuote双引号键
 Hash Hash键
 Dollar ‘$’键
 AmpersandAmpersand键
 Quote 单引号键
 LeftParen 左括号键
 RightParen右括号键
 Asterisk ‘ * ’键
 Plus  ‘ +’键
 Comma ‘ , ’键
 Minus ‘ - ’键
 Period ‘ . ’键
 Slash ‘ / ’键
 Colon ‘ : ’键
 Semicolon‘ ; ’键
 Less  ‘< ‘键
 Equals ‘ = ‘键
 Greater ‘ >‘键
 Question ‘ ? ’键
 At  ‘@’键
 LeftBracket‘ [ ‘键
 Backslash ‘ \ ’键
 RightBracket‘ ] ’键
 Caret ‘ ^ ’键
 Underscore‘ _ ’键
 BackQuote‘ ` ’键
 A  ‘a’键
 B  ‘b’键
 C  ‘c’键
 D  ‘d’键
 E  ‘e’键
 F  ‘f’键
 G  ‘g’键
 H  ‘h’键
 I  ‘i’键
 J  ‘j’键
 K  ‘k’键
 L  ‘l’键
 M  ‘m’键
 N  ‘n’键
 O  ‘o’键
 P  ‘p’键
 Q  ‘q’键
 R  ‘r’键
 S  ‘s’键
 T  ‘t’键
 U  ‘u’键
 V  ‘v’键
 W  ‘w’键
 X  ‘x’键
 Y  ‘y’键
 Z  ‘z’键
 Numlock Numlock键
 Capslock 大小写锁定键
 ScrollLockScroll Lock键
 RightShift 右上档键
 LeftShift 左上档键
 RightControl右Ctrl键
 LeftControl左Ctrl键
 RightAlt 右Alt键
 LeftAlt 左Alt键
 LeftApple 左Apple键
 LeftWindows左Windows键
 RightApple右Apple键
 RightWindows右Windows键
 AltGr Alt Gr键
 Help  Help键
 Print  Print键
 SysReq Sys Req键
 Break Break键
 Mouse0 鼠标左键
 Mouse1  鼠标右键
 Mouse2 鼠标中键
 Mouse3 鼠标第3个按键
 Mouse4 鼠标第4个按键
 Mouse5  鼠标第5个按键
 Mouse6  鼠标第6个按键
 JoystickButton0手柄按键0
 JoystickButton1手柄按键1
 JoystickButton2手柄按键2
 JoystickButton3手柄按键3
 JoystickButton4手柄按键4
 JoystickButton5手柄按键5
 JoystickButton6手柄按键6
 JoystickButton7手柄按键7
 JoystickButton8手柄按键8
 JoystickButton9手柄按键9
 JoystickButton10手柄按键10
 JoystickButton11手柄按键11
 JoystickButton12手柄按键12
 JoystickButton13手柄按键13
 JoystickButton14手柄按键14
 JoystickButton15手柄按键15
 JoystickButton16手柄按键16
 JoystickButton17手柄按键17
 JoystickButton18手柄按键18
 JoystickButton19手柄按键19
 Joystick1Button0第一个手柄按键0
 Joystick1Button1第一个手柄按键1
 Joystick1Button2第一个手柄按键2
 Joystick1Button3第一个手柄按键3
 Joystick1Button4第一个手柄按键4
 Joystick1Button5第一个手柄按键5
 Joystick1Button6第一个手柄按键6
 Joystick1Button7第一个手柄按键7
 Joystick1Button8第一个手柄按键8
 Joystick1Button9第一个手柄按键9  
 Joystick1Button10第一个手柄按键10
 Joystick1Button11第一个手柄按键11
 Joystick1Button12第一个手柄按键12
 Joystick1Button13第一个手柄按键13
 Joystick1Button14第一个手柄按键14
 Joystick1Button15第一个手柄按键15
 Joystick1Button16第一个手柄按键16
 Joystick1Button17第一个手柄按键17
 Joystick1Button18第一个手柄按键18
 Joystick1Button19第一个手柄按键19
 Joystick2Button0第二个手柄按键0
 Joystick2Button1第二个手柄按键1
 Joystick2Button2第二个手柄按键2
 Joystick2Button3第二个手柄按键3
 Joystick2Button4第二个手柄按键4
 Joystick2Button5第二个手柄按键5
 Joystick2Button6第二个手柄按键6
 Joystick2Button7第二个手柄按键7
 Joystick2Button8第二个手柄按键8
 Joystick2Button9第二个手柄按键9
 Joystick2Button10第二个手柄按键10
 Joystick2Button11第二个手柄按键11
 Joystick2Button12第二个手柄按键12
 Joystick2Button13第二个手柄按键13
 Joystick2Button14第二个手柄按键14
 Joystick2Button15第二个手柄按键15
 Joystick2Button16第二个手柄按键16
 Joystick2Button17第二个手柄按键17
 Joystick2Button18第二个手柄按键18
 Joystick2Button19第二个手柄按键19
 Joystick3Button0第三个手柄按键0
 Joystick3Button1第三个手柄按键1
 Joystick3Button2第三个手柄按键2
 Joystick3Button3第三个手柄按键3
 Joystick3Button4第三个手柄按键4
 Joystick3Button5第三个手柄按键5
 Joystick3Button6第三个手柄按键6
 Joystick3Button7第三个手柄按键7
 Joystick3Button8第三个手柄按键8
 Joystick3Button9第三个手柄按键9
 Joystick3Button10第三个手柄按键10
 Joystick3Button11第三个手柄按键11
 Joystick3Button12第三个手柄按键12
 Joystick3Button13第三个手柄按键13
 Joystick3Button14第三个手柄按键14
 Joystick3Button15第三个手柄按键15
 Joystick3Button16第三个手柄按键16
 Joystick3Button17第三个手柄按键17
 Joystick3Button18第三个手柄按键18
 Joystick3Button19第三个手柄按键19

记得加上KeyCode.

关于this.transform的解释

this指的是挂载物体,类型是GameObject.
(类型)常用的属性
(Vector3)this.transform.position(只读)//界面显示的position
(Vector3)this.transfom.rotation(只读)//界面显示的rotation
(Vector3)this.transform.Lossycsale(只读)//界面显示的scale
(GameObject)this.transform.parent//父物体
(Vector3)this.transform.Translate//改变物体移动向量,我估计初值都是(0,0,0)
(Vector3)this.transform.localEulerAngles//改变物体的rotaion
(Vector3)this.transform.localScale//改变物体的scale

本文尚不完善,希望大家多多支持,有什么问题欢迎指出,谢谢。
下期预告:方向键控制物体转弯和跳跃脚本