怎么计算小球弹跳的高度?
lua吧
全部回复
仅看楼主
level 2
runerback 楼主
是在一个游戏任务编辑器里写的,所以可能代码格式有点不一样、、
function initBound(self)--初始化
t=0;--初始时间
y=50;--初始高度
dt=0.1;--时间间隔
los=0.98;--损耗系数
v=0;--初始速度
g=9.8;--重力加速度
dy=0;--高度变化量
sign="d";--上升或下落的判断标志
loo=true;--开始结束的控制标志
h=OFP:getTerrainHeight(2200,-8200);--坐标地形高度
end
function reset(self)--重置
t=0;--重置时间
if sign=="d" then--重置标志
sign="u";
elseif sign=="u" then
sign="d"
end
if y<=0 and v<=0 then--结束判断
endLoop(nil);
end
end
function down(self)--下落
if y>0 then
t=t+dt;
v=g*t;
dy=dt*v;
y=y-dy;
else
reset(nil);
end
end
function up(self)--上升
if v>0 then
t=t+dt;
v=v-g*t;
dy=dt*v;
y=y+dy;
else
reset(nil);
end
end
function Looping(self)
if loo then
if sign=="d" then
down(nil);
elseif sign=="u" then
up(nil);
end
end
end
function endLoop(self)
loo=false;
end
循环是在timer里的,每隔100ms触发一次。
主要要用的是y的值。
2014年07月06日 04点07分 1
level 2
runerback 楼主
本来是要重置速度v的:v=v*los;
结果发现就算是无损耗,还是会停下来,不知道问题到底出在哪里了、、
2014年07月06日 04点07分 2
1