如果是在MIDP2.0中,碰撞是可以检测到的,如果是MIDP1.0,只能够自己写算法了。
解决方案 »
- 对于使用了html标签的表单,如何用js验证是否为空并弹出消息框
- 发送邮件~~ 实现连连看重列功能
- 紧急求救,关于weblogic过滤器的小问题,谢谢!奖励500分
- 请问一个while徨问题?
- 能否编写一个程序,来获取一台机器的内存和CPU使用情况?
- JAVA方法的形参类型有些怎么是类名称
- 关于用JAVA BEAN如何往ORACLE数据库里存入当前日期,要求精确到秒!!!(100分)
- 在一个frame里打开一个jdialog窗口,当frame切换到别的窗口(比如ie),怎么样在切换回来的时候,同时出现jframe和jdialog,而不是单单是
- jdk1.2.2 for sco download?
- 大神们帮我看看这个代码面板中小球怎么动不了啊
- 怎样获得当前的时间,并把它转化为yyyy-mm-dd的格式?
- 关于java.nio的异步通讯方面的问题,高分
将你的台球声明成sprite,就直接可以用里面的这个方法了!
有象素和矩形两种真测模式。
也可以image to sprite
layerManager to sprite
sprite to sprite
1.用javax.microedition.lcdui.game.Sprite 类实现台球动画本身.
2.用javax.microedition.lcdui.game.TiledLayer 类实现.
3.用javax.microedition.lcdui.game.LayerManager 类实现对1,2步骤中图像的管理,别忘了Sprite和 TiledLayer都是Layer的子类.
4.依此类推,不同的属性放在不同的Layer里,如球杆,然后统一用LayerManager 进行管理.
5.有了上面的基础,碰撞就好实现了
比如,1中实现了ball,2中实现了table而且你用LayerManager管理了(manager.append(ball); manager.append(table).
比如你想判断球是否触到了桌边(当然细说来台布和桌沿可能要放在不同的图层,信手写的,只表达一个意思) if (ball.collidesWith(table, true)) {
//做你想做的事
}其余类推.随手写的,可能遗漏较多,供参考.
跟J2ME的游戏API没关系拉
跟J2ME的游戏API没关系拉j2me的game api专门提供了碰撞处理的!
触,如果物体发生了接触则在第N-1帧做出反射动作。否则运动物体间会发生明显嵌入或粘连现象。
判断球与球之间是否发生碰撞非常简单,只要检测空间两点的距离是否小与球的直径便可。
假设两球是完全弹性碰撞,向量t为两球心间的连线,n是垂直于MO的向量。则v1在t上的分量v1t
与v2在t上的分量v2t 动量守恒,由于两球质量相同~联立动能守恒公式可得:碰撞后两球的速度在
t上的分量被交换。而在n方向上v1n,v2n 将保持不变。最后把v1t、v1n、 ,v2t、v2n 分别沿x轴y轴投影对应合成后即可得到两球碰撞后的速度。
(本来有图是很容易解释的,但我不知道这里可不可以贴图。)
球与球之间的碰撞其实不是太复杂的只是用基本的物理公式就是计算到出来。相对于球与球台的碰撞还是相对简单的,因为球台的边会是一个不规则的形状所以做起来会比较难一点。
每一贞重绘图像之前要做的事情有:找到所有运动的球,比如说2,5,7三个球在这一贞中是运动的,其他的球是静止的,并且这三个球的速度(这里指一帧要走屏幕多少个像素)分别为10,20,30,则7号球的速度为最大速度,从0-30按象素逐点移动7号球并检测是否会碰到别的球,同时7号球每移动1.5个像素(MIDP1.0不支持小数,可以粗略认为是2个像素)则5号球移动一个像素并检测5号球的碰撞情况,7号球每移动3个像素,2号球移动一个像素并检测碰撞。如果7号球移动了30个像素都没有任何球发生碰撞,则这一贞结束,到下一贞。否则按照jinalone(何荣进) 的方法计算碰撞后的球的运动方向。注意:一贞中只要有一个碰撞发生,这一贞就结束。
是否碰撞是这样判断的:每个球在每贞的初始状态时,他们所在的区域位置(就是前面提到的把台球桌划分为16个区域)会被记录到一个数组中。检测碰撞时只检测是否与本区域中的球发生碰撞,如果此区域是靠近台球桌的区域,还要检测是否与台球桌发生碰撞或是落入袋中。
我自己做的游戏就是采用这个思路的,速度还可以,击球路线也较准,当然MIDP1.0不支持浮点数,所有坐标放大10000倍做的,自己做的四舍五入,不然路线就不准了