我正在开发一个简单的游戏,当您点击/单击屏幕时,角色会飞起来.持续点击角色会飞(类似于飘扬的小鸟和喷气背包).但是,就喷气背包而言,运动根本不是很平稳.
这是我的代码示例.
可变初始化
maxSpeedLimit = spriteHeight/10;
speed = maxSpeedLimit/2; //half of the max speed
触摸事件
public void onTapOrClick(int action) {
if (action == UP) {
sprite.up= true;
}
else {
sprite.up = false;
}
}
从游戏循环调用精灵更新
public void update() {
if (up) {
y -= speed; //fly up
}
else {
y += speed;// fly down
}
if (speed < maxSpeedLimit) {
speed++; // May be cheep way to add **velocity/acceleration**
}
}
我认为速度不是提高速度的平滑方法,我不确定,但是可能会添加一些与时间有关的变量以增加速度,而且添加重力会使其更逼真,但我不知道该怎么做,我读过很少的博客,第一件事是我无法使用正确的关键字进行搜索,第二件事是它们很难理解,因为它们包含与平台相关的代码.请帮忙.
我正在用android制作游戏,但是可以接受任何语言的代码(HTML5,javascript,Android,Flash或任何一种).
问:如何在用户轻击或单击并放开时飞行的物体(精灵)上增加加速度和重力?
类似于喷气背包的操纵杆(只能上下移动)
更新
在@scottt建议下,我已经实现了dY =重力拍打,现在我可以感觉到重力了,但是有两个问题.
>我的屏幕高度是480,并且精灵立即触摸上(y = 0)和下(y = 480)边界,因为我认为它不断提高了精灵的速度.
>当它碰到地面时,似乎显得很忙,需要花费很多时间才能将精灵抬起.
dY应该有一些限制,而该限制会不断添加到y位置.
这是更新代码.
int downSpeed = 1;
int upSpeed = -2;
int dy = 0;
private void update() {
if (flapping) {
upSpeed = -2; //if flying speed
}
else {
upSpeed = 0;
}
dy += downSpeed + upSpeed;
if (dy < -10) {
dy = -10; //limit for rise speed
}
else if (dy > 8) {
dy = 8; //limit for gravity
}
y += dy; // add value in y location
if (y > GAME_HEIGHT - sprite.getHeight()) {
y = GAME_HEIGHT - sprite.getHeight(); // reset y, if touch ground
dy = 0; //reset speed, otherwise it make it very heavy to rise
}
else if ( y < 0) {
y = 0; //reset y if touch upper limit
dy = 0; //reset speed, otherwise take much time to fall (as it would be in negative)
}
}