unity

unity

常用移动代码

Input.GetKey (KeyCode.x)//键盘按键,x是任意按键

transform.Rotate (x,y, z);//旋转,xyz表示坐标方向,Time.deltaTime对应单位时间

transform.Translate (x,y,x)//平移,xyz表示坐标方向,Time.deltaTime对应单位时间

if (Input.GetKey (KeyCode.A)) {
			transform.Rotate (0,-90 * Time.deltaTime, 0);
		}
		if (Input.GetKey (KeyCode.D)) {
			transform.Rotate (0,90 * Time.deltaTime, 0);
		}
		if (Input.GetKey (KeyCode.W)) {
			transform.Translate (15*Time.deltaTime,0,0);
		}
		if (Input.GetKey (KeyCode.S)) {
			transform.Translate (-10* Time.deltaTime,0,0);
		}

陀螺仪

SystemInfo//读取设备信息

SystemInfo.supportsGyroscope//设备上是否有陀螺仪

Gyroscope//定义一个陀螺仪物体 Gyroscope tuov

Input.gyro//返陀螺仪信息

bool gyinfo;
    Gyroscope go; 
    void Start()
    {
        gyinfo = SystemInfo.supportsGyroscope;//判断设备是否支持陀螺仪
        go = Input.gyro;//返回陀螺仪信息
        go.enabled = true;//调用陀螺仪权限
    }

Vector3 a = go.attitude.eulerAngles//声明一个三位变量为设备姿态(xyz)

GUI

UI遮挡问题

若出现ui重叠,unity会选择最子层显示,若处于同意层会选择最下面的UI显示,如图,三个img处于同一子层,并且空间完全重叠,unity会选择最下面的yallowcar_img为最上层显示

在这里插入图片描述

label,style

GUIStyle style = new GUIStyle();//定义一个guistyle

GUI.Label(new Rect(100, 300, 500, 30), “x” + a.x +" "+ “y” + a.y + " " + “z” + a.z,style);//定义一个label

GUI.Label(new Rect(x位置, y位置, x方向长度, y方向长度), 内容(用+分开),style);

void OnGUI()
    {
        GUIStyle style = new GUIStyle();
        style.fontSize = 100;//设置style文字大小
        GUI.Label(new Rect(100, 300, 500, 30), "x" + a.x +"   "+ "y" + a.y + "   " + "z" + a.z,style);
        if (draw)
        {
           // GUI.Label(new Rect(100, 100, 100, 30), "启动失败");
        }
    }

image

建立image之后,source image不能直接添加图片

在这里插入图片描述

需改变图片Texture Type选择sprite,点击图片之后如下图
在这里插入图片描述

改变image的透明度(color里面的A为透明度)

在这里插入图片描述

button

GameObject>>UI>>button

在这里插入图片描述

pos和width,height分别是位置大小

anchors是锚点位置,锚点位置是确定button在屏幕变化情况下的相对位置,锚点的4个角距离button的4个角的距离时不变的

image是button的外表属性

button监听

Add Component>>Event>>Event trigger

Add New Event Type

PointerEnter//指针指向按钮

PointerExit//指针离开按钮

PointerDown//指针按下按钮

PointerUp//指针松开按钮

pointerClick//点击按钮

下面方框位置添加一个GameObject,旁边的方框添加赋在这个GameObjects上面的代码方法(比如移动方法)

在这里插入图片描述

注意:场景里面会添加一个EventSystem,这个是用于接受button点击的,所以千万不要误删。

button点击范围

button改变大小不可以通过场景界面直接拖动,应该直接在Inspector里面直接更改width和height,如果直接拖动会保留原来点击范围,点击text拖动大小可改变相对点击范围(白色区域为点击范围)

在这里插入图片描述

如果改变button的width和height点击范围会随着button大小相对变动。

场景(跳转,名字)

1,引用SceneManagement

using UnityEngine.SceneManagement;

2,使用跳转语句SceneManager.LoadScene(“场景名字/ID”);

SceneManager.LoadScene("场景名字/ID",LoadSceneMode.Single);//LoadSceneMode.Single为不保留当前场景

注意:跳转场景不会使场景数据重置

3,SceneManager.GetActiveScene () 获取场景名字(scene.name获取场景名)

Scene scene = SceneManager.GetActiveScene ();

键盘按键监听表

Input.GetKey (KeyCode.值)//监听是否按下

值 对应键

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

Vector3与Quaternion

Vector3大多用于表示transform.position(物体的3d坐标,表示物体位置)

Quaternion大多用于transform.rotation(物体的四元数,表示物体方向)

四元数原理以及数学模型:

https://blog.csdn.net/candycat1992/article/details/41254799

如设置物体位置与方向时

transform.position = new Vector3(x,y,z);
transform.rotation = new Quaternion(x, y, z, w);

物体实例化和销毁物体

GameObject.Instantiate(Object,Vector3,Quaternion)

第一个参数 Object 是要生成的游戏物体

第二个参数Vector3就是游戏物体的生成位置

第三个参数Quaternion是表示生成的游戏物体是否旋转,一般是不旋转我们用Quaternion.identity表示无旋转

GameObject.Destroy(gameObject,2.0f);

第一个参数gameObject表示要销毁的游戏对象自身

第二个参数2.0f表示2秒后销毁,可以任意指定时间

显示和隐藏

1.设置物体的激活状态

gameObject.SetActive(bool);

gameobject是激活物体

2.3D物体的显示和隐藏,设置renderer状态

这种方法,相当于是只是隐身的状态,实际上物体还是存在的只是不显示出来而已
一定要先注意,物体有没有Render组件,一般来说需要渲染的物体都有(非UI)
关键要点

gameObject.GetComponent<Renderer>().enabled = bool;

刚体(加力,属性)

定义刚体

private Rigidbody rigidbody;//定义个刚体名为a

刚体赋值

rigidbody = this.GetComponent<Rigidbody>();//复制为当前物体的刚体

给刚体加力(自身坐标)

rigidbody.AddRelativeForce(Vector3.forward , ForceMode.Acceleration);给刚体添加向前的力,Vector3.back/light/right(后/左/右)

给刚体加力(世界坐标)

rigidbody.AddForce(Vector3,ForceMode)//同上

c#获取当前刚体速度

float speed = airshipRigidbody.velocity.magnitude;

音频

添加音源

public AudioSource daojishi;//定义公共一个音源为daojishi

保存代码后在物体inspector板块会出现公共音源

在这里插入图片描述

将带有音频的物体添加拖进去(一般使用空物体赋音频)

碰撞检测

如果是碰撞函数

private void OnTriggerEnter(Collider other)
{
    if (other.tag == "end")
    {
        end = 1;
        d = 0;
    }
}

碰撞检测通过通过碰撞器触发,通过tag识别,所以碰撞检测的前提是物体要有碰撞器,碰撞器中的Is Trigger是触发器,决定物体是否碰撞到它,如果勾上那么物体不会有碰撞效果,会直接穿过去,只触发函数内容
在这里插入图片描述

平滑处理

Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪,这个函数的功能主要是让一个物体像一个指定的位置平滑的移动,比如摄像机的平滑处理

Mathf.SmoothDamp(transform.position.x, target.position.x, ref velocity.x, smoothTime

transform.position.x是当前物体的空间坐标的x轴(y轴、z轴同理)。

target.position.x是target的空间坐标的x轴(y轴、z轴同理)。

velocity是定义的2d或者3d的单位(见下图)。

smoothtime是平滑时间,随着时间的增大平滑速度越来越慢。

public Transform target;    //需要移动的位置
  public float smoothTime= 0.3f; //平滑时间时间越大平滑速度越慢
  private Vector3 velocity;    //如果是2d就用vector2,如果是3d就用vector3
  void Update ()
  {
    //直接通过平滑函数设置物体坐标
    transform.position = new Vector3(Mathf.SmoothDamp(transform.position.x, target.position.x, ref velocity.x, smoothTime),Mathf.SmoothDamp( transform.position.y, target.position.y, ref velocity.y, smoothTime),Mathf.SmoothDamp( transform.position.z, target.position.z, ref velocity.z, smoothTime));
  }

Update FixedUpdate LateUpdate

  1. 物理运算应该放在FixedUpdate中
  • (上面表述的是FixedUpdate的更新频率不是按帧率,而是按一个叫做 fixed frame-rate frame,这里我们称其为物理帧。而其更新的默认频率是每秒50次,这个值可以通过项目设置来更改。)
  1. Input检测应该放在Update中
  • (Update每帧都会被调用)
  1. 相机应该放在LateUpate中
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值