O'Reilly logo

Killer Game Programming in Java by Andrew Davison

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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.

The Boid class and subclasses

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required