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

The Animated 3D Sprite

Figure 19-5 shows the visible methods of AnimSprite3D.

The interface of this class is almost identical to Sprite3D (from the Tour3D application in Chapter 18). The setPosition(), moveBy(), and doRotateY() operations adjust the position and orientation of the sprite, isActive() and setActive() relate to the sprite's activity (i.e., whether it is visible on the screen or not), getCurrLoc() returns the sprite's position, and getTG() returns its top-level TransformGroup.

The only new method is setPose(), which takes a pose name as an argument and changes the displayed model accordingly. Its implementation is explained later in this section.

Scene graph for the application

Figure 19-4. Scene graph for the application

The public methods of AnimSprite3D

Figure 19-5. The public methods of AnimSprite3D

Loading the Poses

The choice of models is hardwired into AnimSprite3D, which makes things simpler than having to deal with arbitrary input. The names of the models are predefined in the poses[] array:

    private final static String poses[] =
           {"stand", "walk1", "walk2", "rev1", "rev2", "rotClock",
            "rotCC", "mleft", "mright", "punch1", "punch2"};

The names in poses[] are used by loadPoses() to load the same-named 3D Studio Max files using PropManager. The loaded models (the different sprite poses) are attached to the scene using a Java 3D Switch

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