查看: 654|回复: 0
打印 上一主题 下一主题

[其他] Unity3D手记 - TweenPosition、加载视频、变换

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-2-27 01:00:03 |只看该作者 |倒序浏览
代码一:
//加载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界面很多,界面自己相互转换的时候难免相互干扰,所以除了代码整洁之外也要注意逻辑的简洁,执行与销毁、重置一定要分开去写,减少修改难度。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-30 17:17 , Processed in 0.081833 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部