当前位置:   article > 正文

Unity—Input类_unity input类

unity input类

今天学习了Input类!+每天分析一点游戏实例!结尾有彩蛋呦!

每日一句:梦想是凌晨拿起比的坚持,是掀开被子的毫不犹豫和冷水扑面的清醒,是六点看到旭日东升的惊艳和笔记绽放的光

目录

Input Manager

什么是InputManager

属性

​编辑

API

练习

1.鼠标垂直移动,使摄像机上下旋转,鼠标水平移动,使摄像机左右旋转

2.键盘垂直输入使物体前后移动,键盘水平输入使物体左右移动,


Input Manager

按W键,往前走

if(Input.GetKey(KeyCode.W)

this.transform.Translate(0,0,10*Time.deltaTime);

//希望玩家自定义按键——用虚拟按钮对应真实按键

什么是InputManager

·即输入管理器Edit—>Project Setting—>Input

·使用脚本通过虚拟轴名称获取自定义键的输入

·玩家可以在游戏启动时根据个人喜好对虚拟轴进行更改

属性

API

获取虚拟轴

//判断虚拟按钮绑定的真实按钮有没有按下

bool result=Input.GetButton(“虚拟轴名”);

bool result=Input.GetButtonDown(“虚拟轴名”);

bool result=Input.GetButtonUp(“虚拟轴名”);

//按正向返回1,负向返回-1,不按返回0

float value=Input.GetAxis(“虚拟轴名”);

float value=Input.GetAxisRaw(“虚拟轴名”);

练习

1.鼠标垂直移动,使摄像机上下旋转,鼠标水平移动,使摄像机左右旋转

左右沿世界坐标,上下沿自身坐标

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class DoRation : MonoBehaviour
  5. {
  6.     public float rotateSpeed = 1;
  7.     void FixedUpdate()
  8.     {
  9.         float x = Input.GetAxis("Mouse X");
  10.         float y = Input.GetAxis("Mouse Y");
  11.         if(x!=0||y!=0)
  12.             Rotate( x,  y);
  13.     }
  14.     private void Rotate( float x,  float y)
  15.     {
  16.         x *= rotateSpeed;
  17.         y *= rotateSpeed;
  18.         //沿x轴旋转
  19.         this.transform.Rotate(-y, 0, 0);
  20.         //左右旋转沿世界坐标y轴
  21.         this.transform.Rotate(0, x, 0, Space.World);
  22.     }
  23. }

2.键盘垂直输入使物体前后移动,键盘水平输入使物体左右移动,

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class DoRation : MonoBehaviour
  5. {
  6.     public float rotateSpeed = 1;
  7.     void FixedUpdate()
  8. { //获取水平、垂直输入
  9.         float hor = Input.GetAxis("Horizontal");
  10.         float ver = Input.GetAxis("Vertical");
  11.         if (hor != 0 || ver != 0)
  12.             Movement(hor, ver);
  13.     }
  14.     public float moveSpeed = 2;
  15.     private void Movement( float hor,  float ver)
  16.     {
  17.         hor *= moveSpeed*Time.deltaTime;
  18.         ver *= moveSpeed*Time.deltaTime;
  19.         this.transform.Translate(hor, 0, ver);
  20.     }
  21. }

重载和重写的区别

封装、继承、多态所处位置不同:重载在同类中,重写在父子类中

定义方式不同:重载方法名相同、参数列表不同,重写方法名和参数列表都相同

调用方法不同:重载使用相同对象以不同方式调用,重写使用不同对象以相同方式调用

多态时机不同:重载是编译时多态,重写是运行使多态

重载(Overload):是一个类中多态性的一种表现,指同一个类中不同的函数使用相同的函数名,但是函数的参数个数或类型不同。可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。调用的时候根据函数的参数来区别不同的函数。)

重写(Override): 是父类与子类之间的多态性,是子类对父类函数的重新实现函数名和参数与父类一样,子类与父类函数体内容不一样。子类返回的类型必须与父类保持一致;子类方法访问修饰符的限制一定要大于父类方法的访问修饰(public>protected>default>private);子类重写方法一定不能抛出新的检查异常或者比被父类方法申明更加宽泛的检查型异常。)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/91823
推荐阅读
相关标签
  

闽ICP备14008679号