Types of Boids
The public and protected methods and data of the Boid
class and its PredatorBoid
and PreyBoid
subclasses are shown in Figure 22-6.
Figure 22-6. The Boid class and subclasses
Boid
represents a boid using a BranchGroup
, TransformGroup
, and BoidShape
(a Shape3D
node). The TransformGroup
moves the boid about in the scene, and the BranchGroup
permits the boid to be removed from the scene (e.g., after being eaten). Only a BranchGroup
can be detached from a scene graph. The subgraph is built in the Boid()
constructor:
private TransformGroup boidTG = new TransformGroup(); // global public Boid(...) { // other initialization code, and then ... // set TG capabilities so the boid can be moved boidTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); boidTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); addChild(boidTG); // add TG to Boid BranchGroup // add the boid shape to the TG boidTG.addChild( new BoidShape(boidColour) ); } // end of Boid()
Boid Movement
The most important attributes for a boid are its current position and velocity. These are set to random values (within a certain range) in the Boid
constructor:
// globals protected Vector3f boidPos = new Vector3f(); protected Vector3f boidVel = new Vector3f(); // code in the Boid constructor boidPos.set(randPosn(),(float)(Math.random()*6.0), randPosn()); boidVel.set( randVel(), randVel(), randVel());
The moveBoid()
method ...
Get Killer Game Programming in Java now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.