Preparing the Laser Beam
The LaserBeam
object is a red cylinder, hidden inside the gun cone when not in use, so there's no need for a Switch
or visibility-controlling code. ShootingBehaviour
rotates the cylinder (and gun cone) to point at the location picked by the user on the checkerboard. It lets FireBeam
handle the shooting of the beam and subsequent explosion.
The laser beam is accompanied by a PointSound
, which moves along with it. This means that the sound's volume increases (or diminishes) as the beam travels towards (or away from) the user's viewpoint.
The class diagram for LaserBeam
is in Figure 23-5; all public methods are shown.
Figure 23-5. LaserBeam's public methods
WrapShooter3D
uses getBeamBG()
to retrieve the beam's BranchGroup
for addition to the scene. The scene graph branch built inside LaserBeam
(by makeBeam()
) is shown in Figure 23-6.
Figure 23-6. Scenegraph branch for LaserBeam
The cylinder is made unpickable, as only the floor should be pickable by the user:
beam.setPickable(false);
The capability bits of beamTG
are set to allow it to be rotated and translated.
ShootingBehaviour
rotates the beam with makeRotation()
, which is identical to the method in GunTurret
, except that it applies the rotation to the beam's TransformGroup, beamTG
.
public void makeRotation(AxisAngle4d ...
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.