Aller au contenu principal

Session 33 — Fix ecran noir (BulletAppState timing + camera spawn)

Bug racine : NullPointerException sur bullet.getPhysicsSpace()

Dans initialize(), on appelait :

bullet = new BulletAppState();
sm.attach(bullet);           // bullet ajoute en attente
bullet.getPhysicsSpace().add(rbc);  // NPE ! physicsSpace = null jusqu'au prochain frame

AppStateManager.attach() ne fait QUE ajouter l’etat en file d’attente.
Il est initialise au debut du PROCHAIN sm.update(), pas immediatement.
Donc getPhysicsSpace() retourne null → NPE → initialize() s’arrete
→ camera jamais positionnee → ecran noir.

Fix : setup physique differee

Nouvel ordre :
1. initialize() : charge .j3o, attache scene, eclairage, camera au spawn, input, attach(bullet)
2. update() frame 1 : bullet.isInitialized() == false → attend, camera libre (noclip)
3. update() frame 2+ : bullet.isInitialized() == true → setupPhysics() (collider + CharacterControl)

Fix : camera positionnee des initialize()

positionCameraAtSpawn() appele AVANT l’attach(bullet) → scene visible
des la premiere frame, meme si les physiques ne sont pas encore actives.

Fix : spawn Y calcule depuis floorH de la zone

Avant : y = 3.0f → camera = y+1.5 = 4.5 → au-dessus du plafond (4.0) → noir
Apres : y = getSpawnFloorY() + 1.0f → zone 3 (floorH=0) : y=1.0, camera=2.5 → OK

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *