Hi 各位开发者,我发现 Oskar 使用了 Sprites 做出长矛的效果,我对其表现颇感兴趣,试图重做一下。 但是,我在用自己的方式做出来,但不幸的是做得还不如 Oskar 的那么稳定。 我将下面 Oskar 的讲话和我的尝试方式贴出来,希望得到一些建议可以指点一下。
你也可以在评论中看一下他发布的视频,顺便跳到 27:40 处。感谢帮助
Oskar的话:
“箭和弓的问题都是一样的,我们试图让弓看起来像实物一样,像挥剑的一样,你知道吗,实际上只有很少的人在开发战场行为,但像挥剑一样,你只要快速在空中挥一下就好,真的不管你挥过去哪个方向,都会看起来很正常,然后把弓朝向相反方向的人打击一下,就看起来很可信。可是如果弓朝着某一个方向指着射箭,这样就会显得很奇怪。如果我们用三维弓,问题就解决了。 例子要更加远,当然是指箭了,我们做了一个单独的箭精灵,这样我们就可以在不同方向上控制它。箭指向某个方向就像船那样,让我们先来说说船。船上只有方向器,所以我们就只用把船转移到那道方向就可以了,但箭就完全不一样了。它更重,那样的话,你想让箭飞过去,必须让它向正确的方向指向,并且在箭飞向目标时保持向正确的方向指向。在这种情况下,船上的指南针就帮得上忙了,所以我们使用这把箭做参考。这种理念让我们做出了弓来做好工作,因为就像弓是一把枪,想让它发射箭只需要在目标方向上准确指向就可以了。只是箭不然,它需要更多重量和在箭射去之前保持指向正确地方”。
我试验:
精灵的尖头向右倾斜
长矛使用了圆柱形的标牌,它总是对着相机旋转,在世界Y轴周围旋转然后以自己的Z轴旋转方向指向最接近的敌人
计算的角度是通过将角色的位置和敌人的位置投影到屏幕空间(CAMERA.WorldToScreenPoint),然后在2D角度之间取一个平角(Mathf.Atan2)。这个角度是用在标牌的Z轴上
问题:在旋转相机,整个360°中,大约一半时,瞄准正确。另一半时,矛的方向偏差了40°(瞄准 enemy 头上的箭头)不知道这是什么问题:是 WorldToScreenPoint 的问题,还是billboard的方向问题,或者跟他的方法完全不一样,我使用的是一个单独的矛精灵。
评论 (0)