周总结

欢迎来到unity学习unity培训这里有很多U3D资源U3D培训视频U3D教程,我们致力于打造业内unity3d培训学习第一品牌

今天总结一下上周学习的知识。

 

坐标系:

 

        世界坐标系与本地坐标系:所有物体的世界坐标系都是相同的、不会改变。每个物体都有一个本地坐标当物体旋转时,本地坐标系统也会跟着物体一起旋转。World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。

 

常用的必然事件:

 

       在Unity的脚本中,可以定义一些特定的函数,这些函数会在满足某些条件时由Unity自动调用,它们被称为必然事件(Certain Events)。

       1)、Awake():唤醒脚本,此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。
       2)、Update():正常更新,用于更新逻辑。每创建一个脚本,脚本中都会默认添加这个方法。此方法每帧都会由系统自动调用一次。
       3)、Start():此方法在Awake()方法之后,Update()方法之前执行,并且只执行一次
       4)、LateUpdate():此方法在Update()方法执行后调用,同样每一帧都调用。
       5)、FixedUpdate():固定更新,更新频率为0.02s
       6)、OnGUI(): OnGUI()在每一帧都会由系统自动调用一次,渲染和处理GUI事件时调用。

 

Transform类:

 

       物体的位置、旋转和缩放。

 

Transform属性方法:

       transform.position:在世界空间坐标transform的位置

       transform.rotaition:重设世界的旋转角度

      transform.translate: 向某方向移动。

      transform.Rotate :旋转

      transform.Find 查找:通过名字查找子物体并返回它。  

 

Input输入:

 

       使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据。

 

input方法:

       GetAxis(“Horizontal")和GetAxis(“Verical”)  : 用方向键或WASD键来模拟-1到1的平滑输入

       GetKey :   当通过名称指定的按键被用户按住时返回true。想想自动开火。

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

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

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

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

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

       GetMouseButton:当指定的鼠标按钮被按下时返回true

        注意:每次输入在"Update()"之前不会再更新,所以建议你将所有的输入调用都写在Update方法中。

 
给物体一个普通力:
       先给物体添加刚体,
       transform.rigidbody.AddForce (0,0,800);

GameObject
 
       GameObject是Unity场景里面所有实体的基类.
 

创建,销毁,克隆游戏对象

 

        创建:GrameObject cube =GrameObject.CreatePrimitive(PrimitiveType.Cube):

           cube.name=”立方体”;//设定名字

           cube.renderer.material.color=Color.red;

        克隆:GrameObject obj =(GameObject)Instantiate(cube);

        销毁:Destroy(cube,1)//一秒后销毁cube;

 

Find查找

 

         通过名字查找物体并返回。    

        通过标签查找游戏物体

        void OnCollisionEnter(Collision col) {
        if (col.gameObject.name == "Player")//通过名字查找
        {}

        if (col.tag == "Player")通过标签查找
        {}
        }

 

Time类:倒计时

 

        属性: deltaTime 

          float a = 3f;


            a -= Time.deltaTime;
                if (a >= 0) {
                 print(a);
              }

 

使用Time类移动物体:

 

       float move_h=0;
        if (Input.GetKey (KeyCode.A)) {
           move_h-=Time.deltaTime;
         }
        if (Input.GetKey (KeyCode.D)) {
           move_h+=Time.deltaTime;
         }
       transform.Translate(new Vector3(move_h,0,move_v));


Yield

 

       可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行

       void Start () {

           StartCoroutine("Get");
        }

      IEnumerator Get() {

           yield return new WaitForSeconds(2f);
           print("aaaaaaaa");
        }

 

消息传递函数:

 

        SendMessage ("函数名",参数,SendMessageOptions) //GameObject自身的Script

        BroadcastMessage ("函数名",参数,SendMessageOptions)  //自身和子ObjectScript

        SendMessageUpwards ("函数名",参数,SendMessageOptions)  //自身和父ObjectScript

 

Random随机数

 

        返回一个随机浮点数,在min(包含)和max(包含)之间。(只读)

        float a=Random.value;

        int b=Random.Range(0,100)    包括最大和最小
        float c=Random.Range(0.0f,1.0f);   包括最小但不包括最大

 

碰撞检测

 

       在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器

       碰撞(Collision)信息是传递到Collider.OnCollisionEnter,  Collider.OnCollisionStay  和 Collider.OnCollisionExit事件。

       碰撞器:Box Collision,Sphere Collision,Capsule Collision,Mesh Collision,Whell Collision,Terrain Collision

       触发器(勾选Is Tagger):

 

触发信息检测:

       1 、当进入触发器
           MonoBehaviour.OnTriggerEnter( Collider other )     
       2、当退出触发器
           MonoBehaviour.OnTriggerExit( Collider other )    
       3、当逗留触发器      

           MonoBehaviour.OnTriggerStay( Collider other )

 

触发信息检测2:

       1、当进入碰撞器
           MonoBehaviour.OnCollisionEnter( Collision collisionInfo )
       2、当退出碰撞器
           MonoBehaviour.OnCollisionExit( Collision collisionInfo )
       3、当逗留碰撞器
           MonoBehaviour.OnCollisionStay( Collision collisionInfo )


忽略碰撞

       有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞
        public Transform ball;  
           void Start() { 
                Physics.IgnoreCollision(ball.collider, this.collider);  
           } 



今天上午测试有道题没写出来,复习一下

     Test2访问Test1的脚本

    Test1

    {

    public int  x=3;

    }

    Void  Start(){

    Test1 a=GameObject.GetComponent<Test1>();

    print (a.x);

    }

 

更多精彩请看:http://www.gopedu.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值