Defold 游戏开发笔记 05

Defold

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

首先是加了敌人在移动时,会面对着所移动的方向,本来我以为用 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 是不可能取得现在的成就的!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • created by Dejavu(不断更新中) 简介 地面信息的提取对于车形的智能机器人来说十分重要,之前一直采...
    ericdejavu阅读 4,751评论 0 1
  • 前端 BezierCurves 相关知识 代码 github 什么是贝塞尔曲线 只需要很少的控制点就能够生成复杂...
    lotuslwb阅读 8,910评论 6 18
  • 大早上被通知明天考科三,今天跑了一圈,明天早上5点半起床,加油!明天自己一个人在一个考场。希望碰到一个好的技师。求...
    哒啦咘啦啦阅读 1,319评论 0 0
  • 在人人上发现你大学毕业照站在最右角,我也是相同的位置啊,还是几百人的大合照。真是了解越多,奇妙越多!
    十来克阅读 1,235评论 0 1
  • 我很爱做梦,从小到大,各种各样的梦境都经历过,总是感觉没有梦的夜晚是不完整的,不真实的。让我们一起来感知梦这个词儿...
    凉凉散散阅读 3,517评论 2 1