2013-09-30 1 views
0

총알의 시작점에 가까워지면 반대 방향으로 총알 두 개를 쏘는 슈팅 게임이 있습니다 (적군은 총알 시작점) 오류가 발생 영역, 여기 풀 리사이클 오류 2 스프라이트가 동시에 스프라이트와 충돌합니다.

내 코드입니다 :

if((_target.collidesWith(bullet))){ 

        resourcesManager.enemyPool.recyclePoolItem(_target); 
        targets.remove(); 
        score=score+1; 

       } 
       if((_target.collidesWith(bullet2))){ 
        resourcesManager.enemyPool.recyclePoolItem(_target); 
        targets.remove(); 
        score=score+1; 
        break; 
       } 

오류 로그 :

09-30 09:47:23.530: E/AndroidRuntime(1167): in writeCrashedAppName, pkgName :com.www.tangent 
09-30 09:47:23.550: I/Process(1167): Sending signal. PID: 1167 SIG: 9 
09-30 09:47:23.550: E/AndroidRuntime(1167): FATAL EXCEPTION: UpdateThread 
09-30 09:47:23.550: E/AndroidRuntime(1167): java.lang.IllegalStateException 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at java.util.LinkedList$LinkIterator.remove(LinkedList.java:164) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at com.www.scene.WeaponSelectScene$1.onUpdate(WeaponSelectScene.java:318) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.engine.handler.UpdateHandlerList.onUpdate(UpdateHandlerList.java:47) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.entity.Entity.onManagedUpdate(Entity.java:1395) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.entity.scene.Scene.onManagedUpdate(Scene.java:284) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.entity.Entity.onUpdate(Entity.java:1167) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.entity.scene.Scene.onManagedUpdate(Scene.java:288) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.entity.Entity.onUpdate(Entity.java:1167) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.engine.Engine.onUpdateScene(Engine.java:591) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.engine.Engine.onUpdate(Engine.java:586) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.engine.LimitedFPSEngine.onUpdate(LimitedFPSEngine.java:56) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.engine.Engine.onTickUpdate(Engine.java:548) 
09-30 09:47:23.550: E/AndroidRuntime(1167):  at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820) 
09-30 09:47:23.570: I/BstWindowOrientationListener(521): getCurrentRotation(0) 
09-30 09:47:23.570: I/ActivityManager(521): Process com.www.tangent (pid 1167) has died. 
09-30 09:47:23.570: I/WindowManager(521): WIN DEATH: Window{b4846b48 SurfaceView paused=false} 
09-30 09:47:23.590: E/InputDispatcher(521): channel 'b472fa40 com.www.tangent/com.www.tangent.GameActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8 
09-30 09:47:23.590: E/InputDispatcher(521): channel 'b472fa40 com.www.tangent/com.www.tangent.GameActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 
09-30 09:47:23.590: I/WindowManager(521): WIN DEATH: Window{b472fa40 com.www.tangent/com.www.tangent.GameActivity paused=false} 

답변

1

난 그냥 같은 문제가 있고, 당신의 proble 대답이없는 m는 나를 발견했다.

사실, 여기에서는 하나의 프레임에서 동일한 객체를 두 번 삭제하기 때문에 (_target이 두 객체와 충돌 할 때 발생합니다) recyclePoolItem에 동시 삭제가 있습니다. 이 문제를 해결하려면 "if"문 대신 "if"대신 "else if"를 사용하여 코드를 작성하십시오.