The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall
Legacy:Vehicles Pre2004/Driver
From Unreal Wiki, The Unreal Engine Documentation Site
I've added a driver to the speeder bike (I created a trike from it) this is how I’ve done it:
(this isn't all the code for the trike, because it's a little much to put it all here)
class Trike extends KCar; var CarDummyDriver MyDummy; simulated function PostNetBeginPlay() { local vector RotX, RotY, RotZ; Super.PostNetBeginPlay(); GetAxes(Rotation,RotX,RotY,RotZ); MyDummy = spawn(class'UMS_CarDummyDriver', self,, Location + DummyOffset.X * RotX + DummyOffset.Y * RotY + DummyOffset.Z * RotZ); MyDummy.SetBase(self); MyDummy.bHidden = True; } simulated function Destroyed() { Super.Destroyed(); MyDummy.Destroy(); } function KDriverEnter(Pawn p) { Super.KDriverEnter(p); p.bHidden = True; MyDummy.bHidden = False; MyDummy.LinkMesh(p.Mesh); MyDummy.Skins = p.Skins; //Set the rotation of bones, so it looks like it's sitting on the trike MyDummy.SetBoneRotation('bip01 spine', rot(0,8000,0)); MyDummy.SetBoneRotation('Bip01 L UpperArm', rot(0,-14000,0)); MyDummy.SetBoneRotation('Bip01 R UpperArm', rot(0,-14000,0)); } function bool KDriverLeave(bool bForceLeave) { local Pawn OldDriver; OldDriver = Driver; // If we successfully got out of the car, make driver visible again. if( Super.KDriverLeave(bForceLeave) ) { MyDummy.bHidden = True; return true; } else return false; } defaultproperties { DummyOffset=(X=-26,Y=0,Z=10) }
And the dummy:
class CarDummyDriver extends Actor; defaultproperties { Mesh=Mesh'Jugg.JuggMaleA' Skins(0)=Texture'PlayerSkins.JuggMaleABodyA' Skins(1)=Texture'PlayerSkins.JuggMaleAHeadA' bHardAttach=True DrawType=DT_Mesh }