2011-11-12 109 views
0

我是新來的Cocos2D,我想知道我怎麼用Java編寫代碼檢查,看看如果我碰到一個精靈我已經嘗試過這樣的事情..的cocos2d的Android觸摸精靈

@Override 
public boolean ccTouchesEnded(MotionEvent event) 
{ 

    CGPoint location = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(event.getX(), event.getY())); 

    if ((location.x == zom.getPosition().x) && (location.y == zom.getPosition().y)) 
    { 
    CCSprite projectile = CCSprite.sprite("bullet.png"); 
    projectile.setPosition(CGPoint.ccp(player.getPosition().x,player.getPosition().y)); 
    addChild(projectile); 
    float length = (float)Math.sqrt((100 * 100) + (100 * 100)); 
    float velocity = 100.0f/1.0f; 
    float realMoveDuration = length/velocity; 
    projectile.runAction(CCSequence.actions(
      CCMoveTo.action(realMoveDuration, CGPoint.ccp(location.x, location.y)), 
      CCCallFuncN.action(this, "spriteMoveFinished"))); 
     if ((projectile.getPosition().x == location.x) && (projectile.getPosition().y == location.y)) 
     { 
      removeChild(projectile, true); 
     } 
    } 
+0

只是好奇,你的函數不返回一個布爾值,按要求。 – Raptor

回答

0

雖然我不是一個cocos2d主控制器,但它看起來像檢查您的代碼的邏輯是有點關閉。你想檢查一下,看看觸摸點是否在精靈當前區域(即((location.x >= sprite.start.x && location.x <= sprite.width) && ((location.y >= sprite.start.y && location.y <= sprite.height)

我認爲一個更好的方法是擴展精靈類,幷包含一個函數來檢查一個點是否在。精靈區域(float isInSpriteArea(CGPoint point))這樣,你可以只通過一個點一個精靈,它可以告訴你,如果它是在這種情況下,觸及

1

有應該是一個最好的解決方案中使用:。

sprite.getBoundingBox.contains(x,y); 

其中x和y是觸摸位置的位置。

1

我希望這會幫助你。我正在使用這種方式來處理特定的觸摸事件。

public boolean ccTouchesEnded(MotionEvent event) { 
     CGPoint location = CCDirector.sharedDirector().convertToGL(
       CGPoint.ccp(event.getX(), event.getY())); 
     if (CGRect.containsPoint((newGame1.getBoundingBox()), location)) { 

      newGame(); 

     } 

     return super.ccTouchesEnded(event); 
    } 

請加這構造器

this.setIsTouchEnabled(true);