您的位置:首页 > 移动开发 > Unity3D

Unity3D学习之(transform和Vector3向量)

2014-12-17 23:48 525 查看
欢迎大家光临我的博客
今天学习的经典日志!↓
一、坐标系
首先坐标系分为:
①世界坐标系World
②局地坐标系Local
 
二、常用的必然事件
在Unity的脚本中,可以定义一些特定的函数,这些函数会在满足某些条件时由Unity自动调用,它们被称为必然事件(Certain Events)。而Start和Update正是最常用的两个事件,因此Unity默认为新建的脚本添加了这两个事件。
 
三、常用的必然事件还包括以下这些(前三种是用的最多的)
1、Awake():唤醒脚本,此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。
 
2、Update():正常更新,用于更新逻辑。每创建一个脚本,脚本中都会默认添加这个方法。此方法每帧都会由系统自动调用一次。
 
3、Start():此方法在Awake()方法之后,Update()方法之前执行,并且只执行一次
 
4、LateUpdate():此方法在Update()方法执行后调用,同样每一帧都调用。
 
5、FixedUpdate():固定更新,更新频率为0.02s
 
6、OnGUI()OnGUI()在每一帧都会由系统自动调用一次,渲染和处理GUI事件时调用。  

四、游戏对象的Transform
Transform属性可以进行位置、旋转、大小的设置
        ①位置:position
        ②旋转:rotate
        ③大小:localScale
如果要操作脚本当前使用的GameObject,则可以省略要操作的GameObjiect.
 
五、Vector3向量
Vector3是unity中定义的一个含有x,y,z三个字段的类,可以表示位置点,也可以表示一个向量。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);
RotaAround(v1,v2,angle),元素围绕着世界坐标的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键来模拟-1到1的平滑输入 
 
下面这段代码是一个物体的前后左右时间:(分别是键盘的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);// 使地球对象围绕着太阳旋转
}
}
 
 
效果图:
①旋转前:



 
②旋转后:



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: