记录每次碰撞后的位置,速度,加速度,角速度,角加速度
就是模拟几条不同的线路随机播放就行了~是定死的~
用A*寻路就可以了~ 每次分叉碰撞按寻路结果走。
需求不明确:
1、是否由服务端控结果
2、小球是一个个下落还是一起下落
1、不管由谁控制,都是只让它最终掉到想掉的位置
2、一个或一起都是一样的逻辑
用帧同步的思路,相同的输入必然算出相同的结果,但是多个球一起下落比一个个下落复杂多了
假设你底部有N个格子
一个个掉落,最少提供N种路径就足够了
多个小球一起掉落,N的数值会几何级增大,因为小球和小球之间会互相碰撞,你不能把他们孤立开来计算
你想复杂了,这本质上是个读博游戏,球的落点在生成时就注定了的,这个游戏境w的读博网站上很多
小球在下落过程中与其他小球是不碰撞的,所以其实没必要用真实物理,只需要模拟跳动和移动路径就行了
应该是,搜索格子,和A*寻路差不多,随机设置几个障碍物,路径其实是(x+1 ||x-1,y+1)到点后播放随机动画,再衔接下去(move下个坐标),每次生成5条路径,随机选1条,
我也想做这种类型游戏,不知道对不对,可以交流交流,
所以我问楼主小球之间是否会发生碰撞
不会相互影响
我懂了 原来是最终结果已经定了 播放一次下落过程而已。最简单的方法就是,先用物理引擎大量掉落小球,记录掉到每个格子的路径保存成配置表,然后后面只需要读表就行了。
简单的方法:把每条轨迹,每个小球的坐标和angle逐帧记录,需要播哪个路径就调用哪套数据。
优雅的方法:参考帧同步,输入条件一致,必然算出相同的结果,只需要保存输入条件就行,比如小球初始坐标、速度、方向,然后让他进入球台,不管算多少遍路径和结果都是一样的。
但是这样你需要考虑伪随机数、定点数的问题
我是掉落的时候保存每帧的坐标;数据量有点大,我一个结果存了20条路径的数据,17个结果就有上百万个坐标了,压缩后的json文件都有1.9M
你说的优雅的方法是自己写计算公式吗?
这个是知道结果算过程:假设最终有10级,小球要落入出口x,那么小球往左偏x次,往右偏10-x。每次偏移用jumpto就可以把跳转动画做好了。
不用每帧坐标啊, 保存拐角坐标就行了。拐角之间直线运行。
自己实现物理效果,或者用引擎的物理系统都行。
最终目的就是:
只要给定小球的初始参数:坐标、方向、速度
那么不管执行多少次,小球的路径和最终落点都是固定的。
这样你只要存N组初始参数就行了
你把数据放服务器管它多大,服务器给你路径就好了
你这个数据量大了,减少些数据,比如一个update记录一次,或者两个update才记录 一次,对比一下效果。我记得我那边数据没那么多的。