Using the MagdalenaMonster as our base monster that we made in a previous tutorial this will show you how to turn your monster into a flying monster. The magdalena base class can be downloaded from here:Magdalana Base Class
Making your monster fly is easy! To make it look convincing you will need to change some animations. Just set bCanFly=true in the monsters defaultproperties. Like this.
defaultproperties { bCanFly=true }
Now your monster will fly off ledges and things like that.
When a flying monster takes damage you need to make sure it plays a good animation that makes sense. So your monster doesn’t appear to walk in mid air for a second. Magdalena doesn’t have any good flying-take hit animations so instead I will just over ride that function and leave it blank.
simulated function PlayDirectionalHit(Vector HitLoc) { }
Excellent. Now for the remaining defaultproperties. We just need to change some animations to some “flying” ones. Magadlenas best flying animation is her “Swim_Thread” animation. So I will use this. Find the best ones for your skin.
defaultproperties { AirStillAnim="Swim_Thread" AirAnims(0)="Swim_Thread" AirAnims(1)="Swim_Thread" AirAnims(2)="Swim_Thread" AirAnims(3)="Swim_Thread" TakeoffStillAnim="Swim_Thread" TakeoffAnims(0)="Swim_Thread" TakeoffAnims(1)="Swim_Thread" TakeoffAnims(2)="Swim_Thread" TakeoffAnims(3)="Swim_Thread" }
Thats it! Your monster class should look similar to this.
class MagdalenaMonster extends Monster; simulated function PlayDirectionalDeath(Vector HitLoc) { local float Decision; Decision = fRand(); if(Decision < 0.25) { PlayAnim('DeathF',, 0.1); } else if ( Decision > 0.25 && Decision < 0.50) { PlayAnim('DeathB',, 0.1); } else if ( Decision > 0.50 && Decision < 0.75) { PlayAnim('DeathL',, 0.1); } else { PlayAnim('DeathR',, 0.1); } } simulated function PlayDirectionalHit(Vector HitLoc) { } defaultproperties { bCanFly=true Mesh=SkeletalMesh'Magdalena.Magdalena' Skins(0)=Texture'MagdalenaTextures.magdalena_body' Skins(1)=Texture'MagdalenaTextures.magdalena_head' IdleWeaponAnim="Idle_Biggun" IdleHeavyAnim="Idle_Biggun" IdleRifleAnim="Idle_Rifle" TurnRightAnim="TurnR" TurnLeftAnim="TurnL" CrouchAnims(0)="CrouchF" CrouchAnims(1)="CrouchB" CrouchAnims(2)="CrouchL" CrouchAnims(3)="CrouchR" CrouchTurnRightAnim="Crouch_TurnR" CrouchTurnLeftAnim="Crouch_TurnL" AirStillAnim="Swim_Thread" AirAnims(0)="Swim_Thread" AirAnims(1)="Swim_Thread" AirAnims(2)="Swim_Thread" AirAnims(3)="Swim_Thread" TakeoffStillAnim="Swim_Thread" TakeoffAnims(0)="Swim_Thread" TakeoffAnims(1)="Swim_Thread" TakeoffAnims(2)="Swim_Thread" TakeoffAnims(3)="Swim_Thread" LandAnims(0)="JumpF_Land" LandAnims(1)="JumpB_Land" LandAnims(2)="JumpL_Land" LandAnims(3)="JumpR_Land" DodgeAnims(0)="DodgeF" DodgeAnims(1)="DodgeB" DodgeAnims(2)="DodgeL" DodgeAnims(3)="DodgeR" DoubleJumpAnims(0)="DoubleJumpF" DoubleJumpAnims(1)="DoubleJumpB" DoubleJumpAnims(2)="DoubleJumpL" DoubleJumpAnims(3)="DoubleJumpR" MovementAnims(0)="RunF" MovementAnims(1)="RunB" MovementAnims(2)="RunL" MovementAnims(3)="RunR" SwimAnims(0)="SwimF" SwimAnims(1)="SwimB" SwimAnims(2)="SwimL" SwimAnims(3)="SwimR" WalkAnims(0)="WalkF" WalkAnims(1)="WalkB" WalkAnims(2)="WalkL" WalkAnims(3)="WalkR" WallDodgeAnims(0)="WallDodgeF" WallDodgeAnims(1)="WallDodgeB" WallDodgeAnims(2)="WallDodgeL" WallDodgeAnims(3)="WallDodgeR" IdleRestAnim="Idle_Rest" IdleCrouchAnim="Crouch" IdleSwimAnim="Swim_Thread" IdleChatAnim="idle_chat" FireHeavyRapidAnim="Biggun_Aimed" FireHeavyBurstAnim="Biggun_Burst" FireRifleRapidAnim="Rifle_Aimed" FireRifleBurstAnim="Rifle_Burst" HitSound(0)=Sound'SkaarjPack_rc.injur1sk' HitSound(1)=Sound'SkaarjPack_rc.injur1sk' HitSound(2)=Sound'SkaarjPack_rc.injur1sk' HitSound(3)=Sound'SkaarjPack_rc.injur1sk' DeathSound(0)=Sound'SkaarjPack_rc.death1br' DeathSound(1)=Sound'SkaarjPack_rc.death1br' DeathSound(2)=Sound'SkaarjPack_rc.death1br' DeathSound(3)=Sound'SkaarjPack_rc.death1br' ChallengeSound(0)=Sound'SkaarjPack_rc.scuttle1pp' ChallengeSound(1)=Sound'SkaarjPack_rc.scuttle1pp' ChallengeSound(2)=Sound'SkaarjPack_rc.scuttle1pp' ChallengeSound(3)=Sound'SkaarjPack_rc.scuttle1pp' }
TIP – Appliances in Standby mode still use a significant amount of electricity. Turn them off at the wall!
Recent Comments