KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm relatively new to obj-c, so I must be missing something, but my program crash when an enemy collides with a wall. I've located where I'm removing the enemy from the loop, while in the loop, but for the life of me, i can't figure out how to fix it. My code is as follows: (the error is "[allEnemies removeObject:enemyType1];") //ALWAYS RUNNING -(void) update:(ccTime)dt { for (CCSprite *enemyType1 in allEnemies) { //for every attacking unit in allEnemies //Adjust the collison box for each enemey depending on the height of the enemy float a; float b; float yOne = (wall.contentSize.height-enemyType1.position.y); float yTwo = (wall.contentSize.height); float xTwo = 30; a = (xTwo*(yOne/yTwo)); // always < 1 b = xTwo-a; // always > 1 //Create the altered collison box CGRect enemyType1Rect = CGRectMake ( enemyType1.position.x - (enemyType1.contentSize.width/2), enemyType1.position.y - (enemyType1.contentSize.height/2), enemyType1.contentSize.width+b, enemyType1.contentSize.height ); //If the enemey hits the wall, stop it, then add it to the attacking enemies array if (CGRectIntersectsRect(enemyType1Rect, wall.boundingBox)) { [enemyType1 stopAllActions]; [allEnemies removeObject:enemyType1]; [attackingEnemies addObject:enemyType1]; } } //Wall Collison END
Tags (comma-separated)
Save Edits
Cancel