如何将box2d对象下来并命中对象?

时间:2013-12-30 08:35:00

标签: box2d cocos2d-x objective-c++

我需要以下逻辑。

1. box2d object is flying top of the screen.
2. If make long mouse click, the flying object come down and hit ground.
3. If release the mouse click, then the object move to top.

我使用

做了第一点
 body_->SetGravityScale(0);
 body_->SetLinearVelocity(velocity);

我将如何从上到下再次从下到上移动?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您执行以下操作:

 bool mainscene::ccTouchBegan(cocos2d::CCTouch *ptouch, cocos2d::CCEvent *pEvent)
 {
      this->schedule(schedule_selector(HelloWorld::longpresscoding));
 }

 void mainscene::ccTouchEnded(cocos2d::CCTouch *ptouch, cocos2d::CCEvent *pEvent) 
 {
      this->unschedule(schedule_selector(HelloWorld::longpresscoding));
 }

 void mainscene::longpresscoding()
 {
     CCLOG("LONG Press");
 }

它会帮助你。

答案 1 :(得分:0)

我将假设你实际上有一些东西在地上(如地平面)让身体能够击中。

首先,要检测长按鼠标,并假设您使用的是cocos2d-x,您将需要一种方法来检测鼠标长按。

为此,您需要关闭场景中的触摸事件或创建一个处理长触摸的类。为此,这里有几个选项:

  1. 使用找到here的CCLongPressGestureRecognizer。
  2. 使用找到here的TapDragPinchInput类(完整演示在MainScene.cpp中使用它)。
  3. 根据你的意愿,我会赞成第二个,因为它会在手指宕机然后出现时拨打电话。

    对于其余部分,您可以根据鼠标事件设置速度。或者对身体施加力量使它们移动。

    有关执行此操作的信息,请参阅演示herehere