纳金网

标题: Unity3D手记 - TweenPosition、加载视频、变换 [打印本页]

作者: 王者再临    时间: 2015-2-27 01:00
标题: Unity3D手记 - TweenPosition、加载视频、变换
代码一:
//加载Resources文件夹下的文件
GameObject logo = Instantiate(Resources.Load(@"manyPrefab/logo")) as GameObject;

代码二:
加载视频(在Web打包中将视频文件存放到*.htm和*.unity文件同一目录下)

第一步、加载视频文件前先声明变量
    //加载视频
    MovieTexture mt;
    string mp;
    WWW www;

第二步、Start方法中初始化视频"j.ogg"为视频名称。mt我理解为视频流。
    IEnumerator Start()
     {
        mp = @"j.ogg";
        www = new WWW(mp);
        yield return www;
        if (www.isDone)
        {
            mt = www.movie;
        }
      }
第三步、在界面中加载进来,这里我用了UITexture
        if (mt != null)
        {
            uiTexture.mainTexture=mt;
            mt.loop=true;
            mt.Play();
         }

代码三:
GameObject位移
TweenPosition.Begin(gameObject,1.5f,new Vector(0,0,0));
延迟执行:这里的yield是需要返回的,所以方法也必须是带返回类型IEnumerator
            yield return new WaitForSeconds(0.7f);

代码四:
鼠标射线检测,检测对象的Collider,tar就是检测到的对象
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 mp = Input.mousePosition;
            if (cam != null)
            {
                RaycastHit hitInfo;
                Ray ray = cam.ScreenPointToRay(new Vector3(mp.x, mp.y, 0f));       //从鼠标位置发射一条射线
                if (Physics.Raycast(ray.origin, ray.direction, out hitInfo))       //射线扑捉对象
                {
                    if (hitInfo.collider.transform.tag == "yqrz")
                    {
                        tar = hitInfo.collider.transform;
                    }
                }
            }
       }

代码五:
基础的transform变换
当没有父物体时,Position与localPosition相同。
gameObject.transform.eulerAngles = new Vector3(2, 0, 0);//固定对象视角
示例代码:人物移动脚本

    void xuanzhuanScene()
    {
        if (Input.GetMouseButton(1))
        {
            float mousX = Input.GetAxis("Mouse X");
            this.transform.transform.Rotate(0, mousX, 0);
            float mousY = Input.GetAxis("Mouse Y");
            _Camera.transform.Rotate(-mousY*Time.timeScale, 0, 0);
            if (_Camera.transform.eulerAngles.x > 30&&_Camera.transform.eulerAngles.x<180)
            {
                _Camera.transform.eulerAngles = new Vector3(30, _Camera.transform.eulerAngles.y, _Camera.transform.eulerAngles.z);
            }
            if (_Camera.transform.eulerAngles.x<330&&_Camera.transform.eulerAngles.x>180)
            {
                _Camera.transform.eulerAngles = new Vector3(330, _Camera.transform.eulerAngles.y, _Camera.transform.eulerAngles.z);
            }
         
        }
    }
    void Cam_Move()
    {
        if (Input.GetKey("w"))
        {
            this.transform.Translate(Vector3.forward*Time.deltaTime*Cam_speed);
        }
        if (Input.GetKey("a"))
        {
            this.transform.Translate(Vector3.left * Time.deltaTime * Cam_speed);
        }
        if (Input.GetKey("d"))
        {
            this.transform.Translate(Vector3.right * Time.deltaTime * Cam_speed);
        }
        if (Input.GetKey("s"))
        {
            this.transform.Translate(Vector3.back * Time.deltaTime * Cam_speed);
        }
        

    }


Unity界面很多,界面自己相互转换的时候难免相互干扰,所以除了代码整洁之外也要注意逻辑的简洁,执行与销毁、重置一定要分开去写,减少修改难度。





欢迎光临 纳金网 (http://www.narkii.com/club/) Powered by Discuz! X2.5