Unity3D学习之(transform和Vector3向量)

欢迎大家光临我的博客

今天学习的经典日志!↓

一、坐标系

首先坐标系分为:

①世界坐标系World

②局地坐标系Local

 

二、常用的必然事件

Unity的脚本中,可以定义一些特定的函数,这些函数会在满足某些条件时由Unity自动调用,它们被称为必然事件(Certain Events)。而StartUpdate正是最常用的两个事件,因此Unity默认为新建的脚本添加了这两个事件。

 

三、常用的必然事件还包括以下这些(前三种是用的最多的)

1Awake():唤醒脚本,此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。

 

2Update():正常更新,用于更新逻辑。每创建一个脚本,脚本中都会默认添加这个方法。此方法每帧都会由系统自动调用一次。

 

3Start():此方法在Awake()方法之后,Update()方法之前执行,并且只执行一次

 

4LateUpdate():此方法在Update()方法执行后调用,同样每一帧都调用。

 

5FixedUpdate():固定更新,更新频率为0.02s

 

6OnGUI()OnGUI()在每一帧都会由系统自动调用一次,渲染和处理GUI事件时调用。  

四、游戏对象的Transform

Transform属性可以进行位置、旋转、大小的设置

        ①位置:position

        旋转:rotate

        大小:localScale

如果要操作脚本当前使用的GameObject,则可以省略要操作的GameObjiect.

 

五、Vector3向量

Vector3unity中定义的一个含有xyz三个字段的类,可以表示位置点,也可以表示一个向量。Vector3乘以数值表示对向量的三个值乘以相应的值,v1-v2则可以表示v2指向v1的向量。

transform.Translate (Vector3.forward);

transform.Translate (new Vector3(10,0,0));

transform.Rotate (new Vector3(0,10,0));

transform.localScale += new Vector3 (0.1F, 0, 0);

RotaAroundv1v2angle),元素围绕着世界坐标的v1点采用v2向量旋转angle角度。

FixedUpdate

Transform.RotaAround(Camera.main.transform.position,Vector3.up,0.5f);元素围绕着摄像头运动。

 

六、键盘判断

GetKey         当通过名称指定的按键被用户按住时返回true

GetKeyDown     当用户按下指定名称的按键时的那一帧返回true

GetKeyUp       在用户释放给定名字的按键的那一帧返回true

GetAxis(Horizontal")GetAxis(Verical用方向键或WASD键来模拟-11的平滑输入 

 

下面这段代码是一个物体的前后左右时间:(分别是键盘的WASD操作)

void Update () {

if(Input.GetKeyDown(KeyCode.W))

{   

transform.rigidbody.AddForce (0,0,500);

}

if(Input.GetKeyDown(KeyCode.S))

{   

transform.rigidbody.AddForce (0,0,-500);

}

if(Input.GetKeyDown(KeyCode.A))

{   

transform.rigidbody.AddForce (-500,0,0);

}

if(Input.GetKeyDown(KeyCode.D))

{   

transform.rigidbody.AddForce (500,0,0);

}

}

效果图如下:

 

 

七、鼠标操作

GetButton 根据按钮名称返回true当对应的虚拟按钮被按住时。 

GetButtonDown 在给定名称的虚拟按钮被按下的那一帧返回true

GetButtonUp 在用户释放指定名称的虚拟按钮时返回true

 

下面这句代码是讲一个小球向前打出去:

void Update () {

if(Input.GetButton("Fire1"))

{   

transform.rigidbody.AddForce (0,0,200);   //先给物体添加刚体

}

}

 

效果图:

 

八、课后练习:实现地球绕着地球转的效果!

代码如下:

public class Earth : MonoBehaviour 

{

public GameObject earth;

public GameObject sun;

// Use this for initialization

void Start () {

earth = GameObject.Find ("Earth");

sun = GameObject.Find ("Sun");

}

// Update is called once per frame

void Update ()

{

earth.transform.RotateAround (sun.transform.position, Vector3.up, 0.5f);// 使地球对象围绕着太阳旋转

}

}

 

 

效果图:

①旋转前:

 

②旋转后:

 

你可能感兴趣的:(Unity3D学习之(transform和Vector3向量))