11.6小结(凝视):移动端VR塔防小游戏(一)

实现功能:
(1) 防御塔的选择
(2) 防御塔在指定位置的部署
(3) 防御塔的拆除
重难点:凝视技术,射线检测;
先实现摄像机的随鼠标转动,模拟头的摇动。
实现思路:
通过鼠标在屏幕的增量(Mouse X,Mouse Y)来改变摄像机的角度。
代码如下(涉及四元数和欧拉角)

float X = transform.localRotation.eulerAngles.x - Input.GetAxis("Mouse Y");   
float Y = transform.localRotation.eulerAngles.y + Input.GetAxis("Mouse X");
Vector3 newAngles = new Vector3(X,Y, transform.localRotation.eulerAngles.z);
transform.localRotation = Quaternion.Euler(newAngles);
        

再来实现凝视(从摄像机中心发射一条射线,若碰撞到指定物体,出现进度圈,并开始加载进度圈)。
如下图所示:

实现思路:
利用两张图片实现进度圈;
UI->Image,贴上一个圆的图片,设置颜色为红色;
在上面的Image下再创建一个Image作为子物体,设置颜色白色,大小比红圆小一点;
设置红圆Image Type为Filled,FillAmount设置为0;
选择Canvas设置Render Mode为Screen Space-Camera,将摄像机拖到render camera上;
添加一个脚本如下:

        Image loadingimage = LoadingImage.GetComponent<Image>();
        Ray ray = new Ray(Head.position, Head.forward);//从摄像机位置发射一条射线
        RaycastHit hitInfo;
        if(Physics.Raycast(ray,out hitInfo,Mathf.Infinity))
        {
            print(hitInfo.transform.name);
            if(hitInfo.transform.name=="tower")
            {

               
                loadingimage.gameObject.SetActive(true);
                loadingimage.fillAmount += 0.01f;
            }
            else if(LoadingImage!=null)
            {
                loadingimage.gameObject.SetActive(false);
                loadingimage.fillAmount = 0;

            }


        }
        

未完续待。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值