【发布时间】:2015-09-24 17:30:02
【问题描述】:
我正在尝试使用 Cocos2d x C++ 中的 Box2d 使用 setVelocity 模拟一些真实的跳跃物理。 我的命令是这样的:
switch (keyCode){
case EventKeyboard::KeyCode::KEY_LEFT_ARROW:
physicsBody->setVelocity(Vec2(75, 0));
mySprite1->setPhysicsBody(physicsBody3);
break;
case EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
physicsBody3->setVelocity(Vec2(-75,0));
mySprite1->setPhysicsBody(physicsBody3);
break;
case EventKeyboard::KeyCode::KEY_UP_ARROW:
physicsBody3->setVelocity(Vec2(0,200));
mySprite1->setPhysicsBody(physicsBody3);
break;
}
但是,我很清楚,每当我改变一个轴的速度时,另一个轴就会得到一个。 问题是:我不能跑跳(跳会停止跑)。
我需要一些方法来一次只改变一个轴的速度,这样我的跳跃就不会干扰我的跑步。那或另一种方式来做完全相同的事情。由于我是游戏编程的新手,因此我对物理方面的想法持开放态度。
【问题讨论】:
-
显然跳跃时不应该修改速度的.X:获取当前速度,设置新的.Y,设置为新速度。
-
所以我现在使用 Vec2 v = PhysicsBody3->getVelocity();我只改变 v.y = 200;在向上箭头的情况下并使用physicsBody3->setVelocity(v);在向上箭头的情况下,它没有用,我的跑步仍然被跳跃打断
-
为什么不使用 force/impluse?
标签: c++ cocos2d-x box2d cocos2d-x-3.0