U3D手记加载视频、射线检测10_11

来公司快一个月了,想想马上就要发工资了还有小激动。想想自己以前写的那些项目,真是一堆Bug集合体,看来以后在公司不断的学习中还要不断的追求完美,路飞这是要开第二档的节奏啊。哇咔咔。。。

代码一:
//加载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界面很多,界面自己相互转换的时候难免相互干扰,所以除了代码整洁之外也要注意逻辑的简洁,执行与销毁、重置一定要分开去写,减少修改难度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值