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

[经验分享] VR实现电影里超帅气的手枪上弹匣

[复制链接]

5

主题

7

听众

2429

积分

中级设计师

Rank: 5Rank: 5

纳金币
149
精华
0

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

跳转到指定楼层
楼主
发表于 2017-4-21 17:27:54 |只看该作者 |倒序浏览

作者痴迷于枪战还有个人英雄主义。。好吧能不说废话么,上正题。


对于手枪换子弹的动作,就是这里设计的是仅仅需要将手枪从大腿前侧稍稍往后侧这么一摆,ok,上弹完成。


哎,这里直接上代码吧。


首先说下,这是自己做的VR项目,所以肯定不能把整个脚本源码都溜出来,就把实现这一功能的函数拿出来了。
脚本是直接挂载在左右手柄上的。


说下思路,其实就是通过去检查手柄的旋转角,使用到了eulerAngles。去判定你是否从一个角度到达另一个角度,再加上计时器控制,就可以检测到我们帅气的甩枪动作啦。需要注意的是,因为容错的问题,你的第一判定角度最好限制三个轴的旋转角。

void huandan()
    {
        if ( transform.eulerAngles.x >= 68&& transform.eulerAngles.x<=73)//检查手柄的X旋转角
        {
            if (transform.eulerAngles.y > 230&&transform.eulerAngles.y < 260)//检查手柄的Y旋转角
            {
                if (transform.eulerAngles.z < 294&&transform.eulerAngles.z < 328)//检查手柄的Z旋转角
                {
                    time_jishi = true;//开启一个开关
                }
            }           
        }
        else if (transform.eulerAngles.y<180&& transform.eulerAngles.x <= 72)//检查是否达到指定角度
        {
            if (time_shi < 2)//计算时间
            {
                //符合条件装填弹匣
            }//是否装填
            time_jishi = false;
            time_shi = 0;
            //重置开关,清零计时器
        }//达到角度
        if (time_jishi)
        {
            time_shi += Time.deltaTime;
        }//启动计时器
    }




因为是VR游戏,也没办法上图呢。大家就领悟下,新人发帖,勿怪,不懂得可以私我询问。


已有 1 人评分纳金币 收起 理由
艾西格亚 + 5 很给力!

总评分: 纳金币 + 5   查看全部评分

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-15 13:27 , Processed in 0.122350 second(s), 32 queries .

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

© 2008-2019 Narkii Inc.

回顶部