|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 物体做抛物线活动是游戏中基础活动物理模子之一!在PC游戏中能够由重力公式容易摹拟,但在手机游戏中,因为多半手机不撑持浮点运算因而不克不及用sin,cos,来分化初速率。以是只能用近似摹拟的办法!我所接纳的是:先缩小后减少的摹拟体例,而且为了更准确到场了必定的偏移量。
先用哈希表列出0-90度的正弦值,而且把值缩小100000倍,比方:
Hashtableanglevalue;
publicvoidloadAnglevalue()
{
anglevalue=newHashtable();
anglevalue.put(String.valueOf(0),newInteger(0));
anglevalue.put(String.valueOf(30),newInteger(50000));
anglevalue.put(String.valueOf(60),newInteger(86603));
anglevalue.put(String.valueOf(90),newInteger(100000));
……
}
如许就能够得出各类角度的正余弦值。
设初速率为V0物体以后坐标为x=0,y=0;t为工夫g重力=10;
根剧力学公式
Vx=V0*cos&;
Vy=V0*sin&;
再依据重力公式:
x=Vx*t;
y=Vy*tC5*t*t;
因为cos&sin&都是缩小了100000倍的以是 再失掉手机屏幕坐标的时分应当减少100000倍
x=Vx*t/100000;
y=(Vy*tC5*t*t)/100000;
如今公式中除t以外都办理了!如今来办理工夫t;
我们能够在游戏主轮回的中有不休增添t的值可是由于主轮回十分快!以毫秒盘算,以是我们应当到场缓冲:
while(true){
thisThread.sleep(10);
if(bFire){
tTemp++;
if(tTemp>10){
t+=1;
tTemp=0;
}
}
代码中的if(tTemp>10) 这个值的判别就调剂了工夫的增加频次!你也能够用if(tTemp>2)来使工夫增加加速 或则用其他数值让工夫变慢。注重的一点就是我们的工夫也要缩小!至于缩小几倍则要看游戏的节拍!我这里临时缩小20000倍,因而公式为:
x=Vx*t/100000;
y=(Vy*tC5*t*t*20000)/100000;
另有我们必要把 物体初始地位放在 屏幕的下放那就必要加个初始地位常量,公式变成:
x=Vx*t/100000;
y=(100000*(getHeight()-20))-(Vy*tC5*t*t*20000)/100000;
getHeight()在手机中为失掉手机屏幕的高度。好了,来看看用了这个公式后的运转效果(NOKIA7650摹拟器 或则unijava摹拟器)
这是45度角情形下的抛物线轨迹。
是否是以为高度不敷呢!运算不敷准确!那末我们在Y上加个偏移量来增添高度,公式改成:
x=(vx+windSpeed)*t/100000;;
intpianyi=(t*400000);
if(vy==0){
pianyi=0;
}
y=(100000*(getHeight()-imgWu.getHeight())-(vy*t-100000*t*t+pianyi))/100000;
这里的X轴还加了风速windSpeed实际中物体定受风速影响!固然这里的风速也是缩小的了;
if(vy==0){
pianyi=0;
}
这个代码是在平抛的时分就不必要到场高度偏移了。如今再看45度角的抛物线
假如你还不中意还能够修改偏移数值来让摹拟更准确。上面来看一些角度在分歧力度微风速下的轨迹快照:
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|