wie kann ich Objekte respawnen lassen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Wenn du das Standard-Template verwendet hast um das Projekt zu erstellen, gibt es in deinem ViewController in viewWillAppear oder viewWillLayoutSubviews ein paar Zeilen die in etwa so aussehen


    Quellcode

    1. SKView * skView = (SKView *)self.view;
    2. if (!skView.scene) {
    3. // Configure the view.
    4. skView.showsFPS = YES;
    5. skView.showsNodeCount = YES;
    6. skView.showsDrawCount = YES;
    Alles anzeigen

    Hier fügst du noch die Zeile

    Quellcode

    1. skView.showsPhysics = YES;

    ein.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.
  • Dann zeig doch mal was du gemacht hast.
    ioscampus hat dir schon das richtige gezeigt. Du musst halt ein wenig mit size spielen oder evtl. treffen

    Quellcode

    1. ​+ (SKPhysicsBody *)bodyWithCircleOfRadius:(CGFloat)r
    bzw

    Quellcode

    1. ​+ (SKPhysicsBody *)bodyWithPolygonFromPath:(CGPathRef)path
    die Form deiner Wolke besser.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.
  • Quellcode

    1. SKSpriteNode *upperwolke = [SKSpriteNode spriteNodeWithImageNamed:@"wolke"];
    2. upperwolke.size = CGSizeMake(130, 50);
    3. upperwolke.zPosition = 3;
    4. upperwolke.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:wolke.frame.size];
    5. upperwolke.position = CGPointMake(300, random);
    6. upperwolke.physicsBody.mass = 600;
    7. upperwolke.physicsBody.affectedByGravity = NO;
    8. upperwolke.physicsBody.dynamic = YES;
    9. [self addChild:upperwolke];
    10. [spwolke addObject:upperwolke];
    Alles anzeigen


    so sieht es momentan aus

    aber ich weis jetzt nicht genau wie ich die Zeile die du geschrieben hast anwenden soll
  • Für den Blauen nimmst du dann

    Quellcode

    1. bodyWithCircleOfRadius:
    um den physicsbody zu erzeugen. (Den Radius darfst du zur Übung selbst rausfinden. ;) )
    Für die Wolken sollte ein Rechteck ausreichend sein.
    Ansatt

    Quellcode

    1. upperwolke.size = CGSizeMake(130, 50);

    solltest du eher das xScale und yScale property verwenden, da wird auch der physicsbody angepasst. Momentan hat er die Größe deiner Original Grafik für die Wolken.
    Also

    Quellcode

    1. upperwolke.xScale = 0.3f;
    2. upperwoke.yScale = 0.2f;

    HIer musst du mit den Scale Werten spielen bis sie möglichst gut passen.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.
  • Quellcode

    1. - (void)spawnwolke {
    2. int random = (arc4random() % (int)self.frame.size.height-80)+0;
    3. SKSpriteNode *upperwolke = [SKSpriteNode spriteNodeWithImageNamed:@"wolke"];
    4. upperwolke.xScale = 0.3f;
    5. upperwolke.yScale = 0.2f;
    6. upperwolke.zPosition = 1;
    7. upperwolke.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:wolke.frame.size];
    8. upperwolke.position = CGPointMake(300, random);
    9. upperwolke.physicsBody.mass = 600;
    10. upperwolke.physicsBody.affectedByGravity = NO;
    11. upperwolke.physicsBody.dynamic = YES;
    12. [self addChild:upperwolke];
    13. [spwolke addObject:upperwolke];
    14. };
    15. -(id)initWithSize:(CGSize)size {
    16. if (self = [super initWithSize:size]) {
    17. /* Setup your scene here */
    18. spwolke = [[NSMutableArray alloc]init];
    19. taka = [SKSpriteNode spriteNodeWithImageNamed:@"Tuka.png"];
    20. taka.position = CGPointMake(self.frame.size.width/7, self.frame.size.height/1.8);
    21. taka.size = CGSizeMake (110,110);
    22. taka.xScale = 0.20f;
    23. taka.yScale = 0.19f;
    24. taka.zPosition = 3;
    25. taka.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:taka.frame.size];
    26. taka.physicsBody.usesPreciseCollisionDetection = YES;
    27. taka.physicsBody.mass = 0.4;
    28. taka.physicsBody.affectedByGravity = NO;
    29. taka.physicsBody.dynamic = YES;
    30. [self addChild:taka];
    31. takaland = [SKSpriteNode spriteNodeWithImageNamed:@"tukland.png"];
    32. takaland.position = CGPointMake(160, 284);
    33. takaland.size = CGSizeMake(self.frame.size.width/1, self.frame.size.height/4.3);
    34. [self addChild:takaland];
    35. wolke = [SKSpriteNode spriteNodeWithImageNamed:@"wolke.png"];
    36. wolke.position = CGPointMake(self.frame.size.width/5, self.frame.size.height/2.5);
    37. wolke.zPosition = 1;
    38. wolke.xScale = 0.3f;
    39. wolke.yScale = 0.2f;
    40. wolke.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:wolke.frame.size];
    41. wolke.physicsBody.usesPreciseCollisionDetection = YES;
    42. wolke.physicsBody.mass = 10000;
    43. wolke.physicsBody.affectedByGravity = NO;
    44. wolke.physicsBody.dynamic = NO;
    45. [self addChild:wolke];
    46. [self spawnwolke];
    47. timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(spawnwolke) userInfo:nil repeats:YES];
    48. firstTouch = YES;
    49. };
    50. return self;
    Alles anzeigen


    Ich hätte noch zwei letzte fragen und zwar die 1. wie schaffe ich das die gespownten Wolken einfach durch die "Statische" Wolke durchfliegt und die zweite ist wie schaffe ich das die spawn Wolken wenn ich drauf springe so zusagen ihre eigene Schwerkraft haben Sodas der Spieler drauf bleiben kann also er springt drauf und fliegt sozusagen auf der Wolke mit .

    Ich wollte mich nochmal an alle bedanken ihr habt mir wirklich geholfen und es ist ein sehr tolles forum

    Mit freundlichen Grüßen Lucas :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von lucas2007 ()

  • Ok ich hab das mit dem durchfliegen herausgefunden
    aber ich hab noch 2 weitere Probleme also nach wie vor das der Spieler nicht mit fliegt auf der wolke und ich will das es bei einer Berührung der score um eins steigt
    also er springt drauf und der Counter zählt einen Punkt


    Mit freundlichen Grüßen


    Lucas