1
我試圖讓我的遊戲中的敵人射擊子彈時遇到麻煩。問題是子彈紋理看起來不是來自敵人紋理。子彈紋理看起來離敵人的位置很遠。看到下面的圖片,瞭解我在說什麼。不同的節點在屏幕上的位置和值
但是,英雄主角可以正常拍攝並且子彈紋理正常工作。 我想象這個問題是在碰撞交互中,敵人的紋理保持在牆壁之間,但是存儲的位置保持着牆外的價值。這太奇怪了。
這裏拍攝方法
-(void)disparo
{
DDLogVerbose(@"DISPARO de un enemigo.");
NSLog(@"DISPARO de un enemigo.");
CGPoint location = cobra.position;
self->balasyExplosionesAtlas = [SKTextureAtlas atlasNamed:@"Clouds"];
SKSpriteNode *bullet = [SKSpriteNode spriteNodeWithTexture:[balasyExplosionesAtlas textureNamed:@"bala"]];
NSLog(@"Posicion DISPARO-ENEMIGO --> x %f -- y %f", cobra.position.x, cobra.position.y);
bullet.position = CGPointMake(cobra.position.x, cobra.position.y + cobra.size.height/2);
// bullet.position = location;
bullet.zPosition = 1;
bullet.scale = 0.8;
bullet.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:bullet.size];
bullet.physicsBody.dynamic = NO;
bullet.physicsBody.categoryBitMask = bulletCategory;
bullet.physicsBody.contactTestBitMask = enemyCategory;
bullet.physicsBody.collisionBitMask = 0;
SKAction *action = [SKAction moveToY:1000 duration:2];
SKAction *remove = [SKAction removeFromParent];
[bullet runAction:[SKAction sequence:@[action,remove]]];
[cobra addChild:bullet];
}
我加入了碰撞和接觸定義爲敵人的代碼。我認爲這是正確的,敵人,牆壁和英雄接觸時不會像幽靈一樣侵入。
cobra.physicsBody.categoryBitMask = CollisionTypeEnemmy;
cobra.physicsBody.contactTestBitMask = CollisionTypeEnemmy | CollisionTypePlayer | CollisionTypeWall;
cobra.physicsBody.collisionBitMask = CollisionTypeEnemmy | CollisionTypePlayer | CollisionTypeWall;
與一般的碰撞定義參數:
typedef NS_ENUM(uint32_t, CollisionType)
{
CollisionTypePlayer = 0x1 << 0,
CollisionTypeWall = 0x1 << 1,
CollisionTypeExit = 0x1 << 2,
CollisionTypeEnemmy = 0x1 << 3,
CollisionTypeBulletPlayer = 0x1 << 4,
CollisionTypeBulletEnemy = 0x1 << 5
};
感謝您的回答。 –
您還應該查看SKScenes的點轉換方法。 – joshd
關於孩子和父母的位置的另一個問題。我想繪製一箇中心應該在紋理中心的圓形節點。我嘗試使用子中心位置(0.0f,0.0f),但子節點出現在右上方。任何想法在紋理的中心繪製圓心?提前致謝。 –