2011-01-13 15 views
6

特定の場所でオブジェクトを移動する方法。例えば、cocos2dの特定の場所でオブジェクトを移動する方法

。 1つの小さな棒(幅= 50、高さ= 10)を有する。プランジャのように手動で移動しなければならない。私はx座標(x = 20(始点)からx = 50(終点)まで)で移動したいので、y座標上を移動しません。しかし、移動していない病棟では50から10に移動します。 alt text コーディング: -

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if (isPlaying) { 
     UITouch *touch = [[event allTouches] anyObject]; 

     touchPosition = [touch locationInView:touch.view]; 
     if (CGRectContainsPoint(para3.boundingBox,touchPoint) 
       isDragging = YES; 

     touchOffset = para3.position.y - touchPosition.y; 

    } 
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
if (isPlaying) { 
UITouch *touch3 = [[event allTouches] anyObject]; 
     float distanceMoved = 
     ([touch3 locationInView:touch3.view].y + touchOffset) - 
     para3.position.y; 
     float newY = para3.position.y + distanceMoved; 
     if (newY > 67 && newY < 99) 
      para3.position = CGPointMake(newY , para3.position.y ); 
     //para3.contentSize/2 
     if (newY >67) 
      para3.position = CGPointMake(67, para3.position.y); 
     if (newY < 99) 
      para3.position = CGPointMake(99, para3.position.y); 
    } 
} 
+0

CocosとUIViewの異なる座標系を探す必要があります。したがって、ポイントをlocationInViewから変換する必要があります。私は正確に覚えていない。しかし、CCDirectorはこのメソッドを実装するクラスです。 ;-)私はこれが助けられたことを願っています。 –

+1

para3.position = cpp(x、y);あなたはcpp(x、y)を使う必要があります。 CGPointMake(x、y)の代わりに。を使用してcocos2d – 0xDE4E15B

+0

私のせい、ccp(x、y); – 0xDE4E15B

答えて

2

私は、私は完全に問題を理解している願っています。私がこのようなシナリオで行ったことは、私のゲームにChipmunkフレームワークを組み込み、PhysicsオブジェクトとしてPlungerとCannonを作ることです。これが完了すると、フレームワークの「ApplyImpulse」メソッドによって速度および方向(すなわち発射角度)を制御することができる。速度や角度、私は初期値を提供するいったん物理学自体によって制御されていたであろう....

関連する問題