作者etrexetrex (ETREX)
看板GameDesign
标题Re: [问题]音速小子的行为模式
时间Sun Jun 4 23:56:15 2006
※ 引述《ddavid (星舞弦独角兽神话忆)》之铭言:
: ※ 引述《etrexetrex (ETREX)》之铭言:
: : 这样会有另一个问题
: : 我先只讲Y
: : dy是Y的速度
: : 主时间轴
: : {
: : 计算dy;
: : if(落地)
: : dy=0;
: : y+=dy;
: : }
: : 问题是当地面平坦时
: : 落地之後即使按↑键去影响dy
: : dy还是会被归零
: : 因为他在移动之前是接触着地面的状态
: : 囧
: : 这让我不晓得怎麽作跳跃的功能
: 直接归零太特例化了吧?应该是在接触时,给予一个反作用力。比如:
: ○
: ↓ 2
: ───────────
: ↑ 2
: 撞击时,地面送回一个同样是2的反作用力,但因为视为人体由骨骼肌肉吸收掉
: 所以不会弹起,也只有这时候会发生那个反作用力。但你按上时,你并没有对地面施
: 以正向力(就人体跳跃机制当然是有,先不管那麽多),所以并没有产生什麽该被吸
: 收掉的反作用力,不应该归零。简单的说,就是在对地面有施与正向力时,才针对该
: 反作用力归零。又比如斜面时:
: / 2^(1/2)
: 2 / /
: / ─→ 2
: ○→/ \
: / 2^(1/2)
: /
: /
: 只有朝右下方的分力对於地面是正向力,所以会给回一个往左上的2^(1/2)力量
: ,也只有这个力是被人体吸收掉归零的,而往右上的力保持使得出现爬上斜坡的情况
: 。而脚不会打滑是因为地心引力持续作用所以正向力一直会有,也就有磨擦力。爬到
: 越陡之处,对地面的正向力分量就越小,磨擦力越来越不足而被地心引力往左下的分
: 量打败所以才会滑下来。
: 看要做到多细就把整个机制的越多东西省略这样,反之影响较小或游戏设定不需
: 要的东西就不鸟或省略掉就好了。
现在演算法知道了
但是有一个很大的问题就是如何判断撞击的角度是多少?
在FLASH里面有个 MC.HitTest(X,Y) 的函数
可以判断MC是否碰触到(X,Y)
函数的结果是布林值 (true or false)
我只想到一个很蠢的方法
就是用一个回圈去计算球的圆周轨迹(X,Y)
然後每一个影格都去判断 MAP是否碰触到 轨迹N个点
通常每秒30影格
若轨迹用360个点
每秒就要做30*360次的IF判断
但是这应该是很浪费CPU的做法
请问用什麽方法才可以有效的计算出撞击时的角度(地面凹凸不平时)
--
无名网志:
http://www.wretch.cc/blog/et284vu065k3
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.125.108