VR乒乓球项目Unity3D 开发经验整理,1总纲

最近入手了一套vr设备,舍不得买商店里的游戏,再看看自己不就是程序员嘛。随手开发一个来玩吧

先找找csdn看看有没有开源的,找了一阵,全都是2d的简单东西,没有参考价值。还得靠自己,也给后人留点资料。

整个过程有几个重要部分,

1.场景搭建,物体尺寸一定要和真实世界1:1比例,因为在VR世界里一旦有偏差就会显得不真实

2.物理世界模拟,球、球拍、桌子的弹性,弹性损失,轨迹,碰撞后的速度变化

3.AI部分设计,挥拍速度,挥拍角度如何计算

4.计分系统和其他细节

 

其实为什么没有资料很好理解,民用VR还没有特别普及,普通程序员天天996哪有空买那么贵个鸡肋玩具。键盘鼠标操作的游戏对真实场景模拟再到位用户也感受不到。当然,得益于unity物理引擎对真实世界的模拟,我们可以节省很多工作量。

废话少说,进入正题。

空白场景加入一个地面,乒乓球桌,球拍,球。模型自行百度,有免费的按标准比例建好的模型,只是球我嫌他的不够圆用的简单的sphere。考虑到第一人称视角直接就看到后面的天空了,太不舒服,加了一面后墙。

然后给参与运动的物体添加组件,首先是球,有碰撞体、刚体、声音、还有物理材质,物理材质可以决定弹性。

调整尺寸、重量、移动和碰撞检测全部设置为最高。

然后是球桌,在桌面和球网上添加Box Collider,物理材质不同,桌面弹性是0.9,球网弹性是0,这样球在接触球网以后会直接停下。运行起来,球会落在桌面上,弹跳几下,然后静止。

这里要注意,理论上如果两面弹性都为1,球会原地弹跳永不停止,实际上由于某些原因球会越跳越高,弹性设置成0.969999就得到预期效果了。具体参考https://answer.uwa4d.com/question/5d45357727d7e5590f6cd850

https://answers.unity.com/questions/736091/how-to-get-a-perfect-bouncing-ball.html

我的弹性用0.9是拍脑门写的,实测球会弹4下(与高度有关)

然后是球拍,rigibody和mesh collider,设置好质量就ok,因为要受手柄或AI控制,所以去掉重力

现在拖入VR的SDK,让球拍随着手柄移动,把球做成perfab。

实例化一个球再给一个推力就算发球。可以打包安装到机器里体验一下了。Unity自带的物理引擎相当不错,挥拍击球的感觉很真实,特别是球的轨迹,快速挥拍球就快,慢速挥拍球就慢,削球的时候球就有旋转(感觉在转,速度和轨迹像,这个很惊喜)

关于代码,下一篇再写。

 

ps:

1.看到评论有人问可不可以引用我的东西,其实写出来就是为了分享,随便引用。

2.有人猜测我毕业了,故做神秘,反正还会偶尔写点东西。

3.有人问一些学术问题,不想回复,除非正想写的东西刚好能提到。因为学术问题不是一句两句能说清的,我的观点和方法也不一定对,这些要你自己收集资料,自己分析,自己思考。我写出来的东西,只是一份资料。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值