首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Defold 游戏开发笔记 05

趁着周末有点时间,为游戏的路线编辑器加了不少新东西。

首先是加了敌人在移动时,会面对着所移动的方向,本来我以为用 go.animate(go.get_id(), "rotation"...) 就可以,谁知道 go.animate 在处理旋转角度时会引起不正常的缩放效果,因为它所用的变量是 quarternion,而不是一个简单的角度,估计go.animate 是用了vmath.lerp() 来处理数值的变化,如果想正确的处理quarternion 是要用 vmath.slerp 的。后来在官方论坛找到有人遇到相同问题并想到的解决方法,几番折腾后才终于搞好。

更重要的是,今天加入了敌人可以沿着曲线移动的功能! 终于不用只是直来直往的那么单调。

-- Catmull-Rom Splines

local function getPointOnCurve(p0, p1, p2, p3, target, t)

local t2 = t * t

local t3 = t2 * t

target.x = 0.5*((2.0*p1.x)+(-p0.x+p2.x)*t+(2.0*p0.x-5.0*p1.x+4*p2.x-p3.x)*t2+(-p0.x+3.0*p1.x-3.0*p2.x+p3.x)*t3)

target.y = 0.5*((2.0*p1.y)+(-p0.y+p2.y)*t+(2.0*p0.y-5.0*p1.y+4*p2.y-p3.y)*t2+(-p0.y+3.0*p1.y-3.0*p2.y+p3.y)*t3)

end

本来的直线模拟曲线:

新的曲线路径:

我选用的曲线计算公式是 Catmull-Rom Splines,这个公式的原作者是 Edwin Catmull 和 Raphael Rom。Catmull 的其他重要发明还有 Texture mapping 和 Catmull–Clark subdivision surface,大家有没有发现这些可都是三维电脑图像处理的重要公式!而Catmull 是何许人呢? 他正是Pixar 创办时的技术大牛CTO,现任 Walt Disney 和 Pixar 的President!

John Lasseter 是 Pixar 的创意灵魂,但背后若不是Catmull 技术上过硬的支持,估计 Pixar 是不可能取得现在的成就的!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180120G0OVJD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券