android 加速度 重力,android-通过重力和加速度使飞行平稳,如飞扬的小鸟或喷气背包喜悦的飞行...

我正在开发一个简单的游戏,当您点击/单击屏幕时,角色会飞起来.持续点击角色会飞(类似于飘扬的小鸟和喷气背包).但是,就喷气背包而言,运动根本不是很平稳.

这是我的代码示例.

可变初始化

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)

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值