JS小游戏实例:2D桌面台球
http://www.itjxue.com 2015-08-06 23:09 来源:未知 点击次数:
DEMO: http://cnwander.com/demo/billiards/
原文地址:http://cnwander.com/blog/?p=11
先贴上代码:
运行代码框
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
虽厚颜冠名桌球,其实与真实桌球还相差甚远,还有太多需要改进的地方。
具体待解决的问题:
- 由于浏览器上刷新频率不可能太高,可能当检测两球距离时,两球已经重叠了大部分,甚至完全越过。
完全越过的情况先不考虑,重叠部分如果还原到精确的相切状态,运行非常缓慢,所以我只采用了计算量较少的近似值,具体问题主要体现在开球时,多球碰撞时有些诡异。
(如果哪位有好的优化计算方法,可以拿出来与wander分享,那wander真的感激不尽) - 球自身滚动与桌面摩擦力问题。如正中击球的瞬间,母球滑行状态的摩擦力会大于向前滚动时的摩擦力,小于缩杆时摩擦力等等。这个问题好解决,只是刚开始没考虑进去,之后也没添加了,具体体现在两球正撞后,撞击球将完全静止,这是不正确的。
- 能量损耗问题,无论与边沿碰撞还是球与球相撞,都是直接减去一个固定值,这肯定是存在很大问题的。
其它肯定还会有很多问题,担心假期把心玩油了,回头没心思继续,干脆一气呵成,赶得有些匆忙,问题回头再慢慢解决吧,先发上来,对这块有兴趣的同学一块儿探讨探讨。
大学数学基本是过场,高中的物理数学与忘得所剩无几,真正做东西才发现自己这块太薄弱,希望在这方面经验比较丰富的同学不吝赐教。