首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之高尔夫球推杆游戏Demo(三十四)
2012
08-17

Unity3D研究院之高尔夫球推杆游戏Demo(三十四)

          MOMO虽然要告别Unity3D开发一段时间,可是我的博客永远不会停止对技术的渴望。前两天用了两个小时帮公司做了一个简单的小DEMO,今天我把它分享出来。如下图所示,游戏的操作很简单,控制旋转的方向,保持小球朝向着改方向发射,知道小球被球杆打进洞,表示推杆完成。

 

Unity3D研究院之高尔夫球推杆游戏Demo(三十四) - 雨松MOMO程序研究院 - 1

 

我说明一下这个DEMO中使用到的一些技术难点。

游戏场景中的这支球杆模型是没有动画,为了让球杆有击打小球的动画,我们可以使用旋转球杆的中心来完成。我把球杆旋转分为两部分,第一部分是球杆从起始点向上旋转,第二部分是球杆从最高点向下旋转击球。

有一个重要的方法可以很轻易的帮我们完成旋转插值的计算。

Quaternion.Lerp()方法,参数1表示改模型其实的旋转角度,参数2表示该模型结束的旋转角度,参数3表示该模型从起始角度旋转至结束角度所使用的时间。把这个方法放在Update方法中,就好比每一帧都会计算当前模型旋转中的角度,只到它旋转结束。

 

 

如此一来我们就可以使用纯代码完成球杆击球的一个完成动画。

通过按下“向左”、“向右”来调整击球的角度。

使用RotateAround()方法,让球杆始终围绕着小球在Y轴方向旋转。参数1表示围绕旋转参照点的位置(小球的位置)参数2表示围绕旋转的角度,Vector3.up就是表示Y轴旋转,参数3表示一次旋转的速度。

 

 

然后是绘制球杆击打小球的目标方向线,也就是图中绿色半透明的线,他会始终计算小球击打的方向。其实它就是一道简单的数学题,忽略Y轴,已知平面中的一个点、一个角度、一段距离,求另一个点的位置,我的做法是这样的,100就表示距离,把线画出来即可。

 

 

最后是将小球打出,计算一个角度,施加一个力就可以。

 

 

 

这里说一下localPosition localRotation localScale  与 Position Rotation 的区别。 在U3D中我们可以在游戏对象下面绑定子对象,加local的表示这个位置与旋转是相对父对象的位置,开发中只该对象是某对象的子对象时尽量使用 localPosition localRotation localScale 否则你会发现你的坐标非常混乱。因为如果使用Position Rotation 它和监测面板视图中的位置是不一样的,因为目前你的对象是在子对象中、自对象的坐标永远是相对父对象的坐标。

 

最后是这个高尔夫球游戏的DEMO,欢迎大家下载。 今天非常高兴,因为MOMO的博客备案经历了5次备案,终于通过拉,高兴,哇咔咔~

本文的源码: http://vdisk.weibo.com/s/aJwq-

 

 

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 雨松大,现在我也在做一款高尔夫球游戏,不过遇到了个难题,卡了几个星期,想来请教一下。球洞在一个小岛上,小岛是美工做的模型,所以表面附加着网格碰撞器;球附加着刚体和球形碰撞器。当球打到岛上的时候,球会发生乱蹦乱跳的现象,而不是直线滚动下去,主要的原因是网格碰撞器的问题。由于小岛表面不是平的,直接把网格碰撞器换成盒子碰撞器的时候,球会在岛上悬空停着,效果很不好。小岛之外是Unity自带的地形编辑器做的,球在那里就不会有这种现象,我问老总为什么不把小岛也用地形编辑器做,他说那个实现他想要的效果不是很好,所以就叫美工做模型。请问您有什么建议啊?PS:文字描述好像有点多,呵呵。

    • 地形能不用U3D就不要用 因为U3D的地形面数比较多 而且不好操作(个人觉得) 最好直接在3DMAX中来做地形。 小球的效果不好 是因为物理这块没调好, 可以试试物理材质。。

      • 我无论把物理材质参数怎么调,小球的效果还是那样,但还是非常感谢的你指点。偷偷的告诉你一件事哦,其实我走上Unity这条路,你对我的影响挺大的。你曾经送过一本你写的书给我一个师兄,他就在他的QQ空间说了这件事,我就知道有这样一种东西的存在,上网找了一下资料,感觉挺不错的,就买了你的书回来学。越学越喜欢,最后就回不了头了……

  2. Pingback: t裤女

  3. 雨松,虚拟漫游中如何制作一个小地图让小地图上带有附件标志性建筑物的指示标?比如在校园中漫游,走到图书馆附近的时候小地图上会有个箭头指向图书馆的位置。

    • 雨松老师的书,我已经在当当网上购买了哦!但我主要想实现虚拟装配的功能,不知雨松老师是否有相关实例,或者给点提示,谢了1