作者linjack (嗯)
看板GameDesign
标题Re: [问题]音速小子的行为模式
时间Mon Jun 5 01:38:16 2006
※ 引述《etrexetrex (ETREX)》之铭言:
: 现在演算法知道了
: 但是有一个很大的问题就是如何判断撞击的角度是多少?
: 在FLASH里面有个 MC.HitTest(X,Y) 的函数
如果要真的做一点有样子的模拟, hitTest 最好不要用...
: 请问用什麽方法才可以有效的计算出撞击时的角度(地面凹凸不平时)
其实这在我给的那个游戏「N」网页上就有说明
http://www.harveycartel.org/metanet/tutorials/tutorialA.html
看一下上面讲的 Separating Axis Theorem (SAT)
如果不嫌弃英文的话 应该不会难懂 上面用到的也只有国高中的向量.
对於移动物体来说, 重要的是他的位移、速度、加速度在 x y 方向上的分量
对於碰撞时的处理, 是看碰撞点的 切线单位向量 与 法线单位向量 如何
把移动物体上相关的向量对 切线单位向量 与 法线单位向量 做投影
然後在这两个方向上做相关的处理动作
只是说你今天地面凹凸不平要精致到何种程度
也是决定实作方法的一个重要关键
是要像前面那个囧Game那样, 连字元符号的边缘都要能抓出来吗?
当然那就非常难了, 那个囧Game的判定问题很多
因为碰撞图型的外型太过复杂 所以那个囧Game只能做到
抓出大概的外型 而且在判定上的错误就会多
但我想光是做到那种程度已经相当不错了
另外就是像 N, N 这个游戏就比较类似传统的 Platformer
地形不外乎固定大小的圆、弧、斜面、方块等凑起来的
由於在碰撞元件上做过相当程度的化简
所以系统较容易设计 效率上也能选择针对特定地形设计碰撞函数
来达到效率上的提升 而且在碰撞判定上可以做到相当高的准确度
所以我认为先选定想做到的效果
再选择适当的手法 approach 会比较好
个人意见 仅供参考 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.72.57.78
※ 编辑: linjack 来自: 203.72.57.78 (06/05 01:39)
※ 编辑: linjack 来自: 203.72.57.78 (06/05 01:48)
1F:→ linjack:啊....不小心修掉谁的推文 @__@a 06/05 01:48
2F:推 etrexetrex:是我的 囧GAME 我猜是用FLASH本身的HITTEST做的 06/05 18:20
3F:→ etrexetrex:因为这个函式可以判断一个不规则形状是否碰触到某个点 06/05 18:21
4F:→ etrexetrex:囧球在被压挤时会往上跑,我想这就是囧球可以爬45度坡 06/05 18:22
5F:→ etrexetrex:的原因 06/05 18:23