Page 2 of 16 FirstFirst 123412 ... LastLast
Results 11 to 20 of 153

Thread: Relative Physics Problem

  1. #11
    Syhon
    Guest
    Code:
    AR_Lift = AR_Forward * 1.5 * Abs(Cos(Y.Pitch));
    That piece of code doesn't compile, as Y is a Vector. Rotation.Pitch does work for that piece of code, but your contribution is still appreciated, thanks.

    (I have previously noted to myself that it would be more correct to check the current Pitch against the Pitch of the plane's Velocity-Vector; however, I'm happy with the responsiveness of the movement that this code simulates, for the purposes of the cartoon-ish game I am attempting to create.)


    I did have a fresh look at the rest of my code though, and determined this replacement:
    Code:
    // This gives lift upwards relative to its up-axis and push forwards relative to its forward-axis:
    AR_ForceApplication.X = AR_UpwardsNormal.X * AR_Lift + AR_ForwardsNormal.X * AR_Forward;
    AR_ForceApplication.Y = AR_UpwardsNormal.Y * AR_Lift + AR_ForwardsNormal.Y * AR_Forward;
    AR_ForceApplication.Z = AR_UpwardsNormal.Z * AR_Lift + AR_ForwardsNormal.Z * AR_Forward;
    That fixes the "always travels forward along the global x-axis" issue. Of course, I should have seen it before.

    (Incidentally, does anyone know why UDK decided to swap all the axes around, so that the x-axis in UDK is actually the z-axis for most normal 3D systems?)


    Regardless, the main issue is still how rotation is applied. Everything else works now, save for the issue demonstrated in my crude diagram above: if I spin the plane around in one axis, it no longer rotates correctly when rotating about another axis. It treats the current orientation of the plane as global orientation. I think it has to do with the following line but I am not sure exactly why it would be wrong, apart from the fact it just seems to apply the values globally:

    Code:
    // Rotate the biplane
    AddTorque(AR_ForceRotation);
    Thank you for all your help so far. I'm still looking at the code; I'll post back here if I solve it. Thanks.

  2. #12
    Blade[UG]
    Guest
    in any system i've ever worked with (admittedly not many), up/down is Z ...

  3. #13
    Syhon
    Guest

    Current Solution

    As I said, "AddTorque" does apply globally, so my workaround has been to manually calculate the relative torque-add components, then apply them in that global sense. I used the normals from the "GetAxes" method that Seenooh gave me.

    Apropos, Vector "Y" is now renamed "AR_SidewardsNormal":

    Code:
    GetAxes(Rotation, AR_ForwardsNormal, AR_SidewardsNormal, AR_UpwardsNormal);
    
    // It's probably unnecessary to normalise these:
    AR_ForceRotationVectX = Normal(AR_ForwardsNormal);
    AR_ForceRotationVectY = Normal(AR_SidewardsNormal);
    AR_ForceRotationVectZ = Normal(AR_UpwardsNormal);
    
    // Calculate the XYZ components of the relative steering:
    AR_ForceRotationVectX.X *= 35 * Steering; // Steering is between -1 and 1	
    AR_ForceRotationVectX.Y *= 35 * Steering; // Steering is between -1 and 1	
    AR_ForceRotationVectX.Z *= 35 * Steering; // Steering is between -1 and 1	
    
    AR_ForceRotationVectY.X *= 30 * Throttle; // Throttle is between -1 and 1
    AR_ForceRotationVectY.Y *= 30 * Throttle; // Throttle is between -1 and 1
    AR_ForceRotationVectY.Z *= 30 * Throttle; // Throttle is between -1 and 1
    
    AR_ForceRotationVectZ.X *= 12 * Rise; // Rise is between -1 and 1
    AR_ForceRotationVectZ.Y *= 12 * Rise; // Rise is between -1 and 1
    AR_ForceRotationVectZ.Z *= 12 * Rise; // Rise is between -1 and 1
    
    // Add them together to get final global rotation vector:
    AR_ForceRotation.X = AR_ForceRotationVectX.X + AR_ForceRotationVectY.X + AR_ForceRotationVectZ.X;
    AR_ForceRotation.Y = AR_ForceRotationVectX.Y + AR_ForceRotationVectY.Y + AR_ForceRotationVectZ.Y;
    AR_ForceRotation.Z = AR_ForceRotationVectX.Z + AR_ForceRotationVectY.Z + AR_ForceRotationVectZ.Z;
    I probably could have used a better naming convention... Anyway, now there's mainly tweaking to do. I'll post back here with the final script (if I ever finalise it). I'll probably start other threads as I find separate issues.

    Thanks for all your help!

    PS: Strange, in basically all my studies, Y-axis is up and Z-axis faces outwards/forwards. I come less from a game-engine-user perspective and more from Mathematics, but maybe I'm wrong. I guess it doesn't matter either way, as long as I know which is which for UDK.

  4. #14
    Syhon
    Guest

    Finalised Code, somewhat.

    Using the below key bindings, my AR_Aircraft class has the following code:

    Code:
    class AR_Aircraft extends UTAirVehicle;
    
    /* etc */ 
    
    var float AR_MaxLift, AR_TurnSpeed, AR_Speed, AR_CurrentForward, AR_AddedLiftSpeed, AR_Acceleration;
    
    /* etc */
    
    simulated function AirRaidKinematics(float DeltaTime)
    {
    	local Vector AR_ForceApplication, AR_ForceRotation, AR_ForwardsNormal, AR_UpwardsNormal, AR_SidewardsNormal;
    	local Vector AR_ForceRotationVectX, AR_ForceRotationVectY, AR_ForceRotationVectZ;
    	local float AR_Lift, AR_ForwardSpeed, AR_NewRise;
    
    	// While there is a player in the biplane:
    	if (PlayerController(Controller) != None)
    	{
    		GetAxes(Rotation, AR_ForwardsNormal, AR_SidewardsNormal, AR_UpwardsNormal);
    		
    		// It's probably unnecessary to normalise these:
    		AR_ForceRotationVectX = Normal(AR_ForwardsNormal);
    		AR_ForceRotationVectY = Normal(AR_SidewardsNormal);
    		AR_ForceRotationVectZ = Normal(AR_UpwardsNormal);
    
    		// Rise is NOT between -1 and 1, like it said it was
    		AR_NewRise = 0;
    		if (Rise != 0) AR_NewRise = Rise / Abs(Rise); // Avoid divide by 0
    
    		// Calculate the XYZ components of the relative steering:
    		// Generic controls Steering, Throttle and Rise are set by the controller
    
    		// Roll
    		AR_ForceRotationVectX.X *= 35 * -AR_NewRise; // Steering is between -1 and 1	
    		AR_ForceRotationVectX.Y *= 35 * -AR_NewRise; // Steering is between -1 and 1	
    		AR_ForceRotationVectX.Z *= 35 * -AR_NewRise; // Steering is between -1 and 1	
    
    		// Pitch
    		AR_ForceRotationVectY.X *= 30 * Throttle; // Throttle is between -1 and 1
    		AR_ForceRotationVectY.Y *= 30 * Throttle; // Throttle is between -1 and 1
    		AR_ForceRotationVectY.Z *= 30 * Throttle; // Throttle is between -1 and 1
    
    		// Yaw
    		AR_ForceRotationVectZ.X *= 25 * -Steering; // AR_NewRise is between -1 and 1
    		AR_ForceRotationVectZ.Y *= 25 * -Steering; // AR_NewRise is between -1 and 1
    		AR_ForceRotationVectZ.Z *= 25 * -Steering; // AR_NewRise is between -1 and 1
    
    		// Add them together to get final global rotation vector:
    		AR_ForceRotation.X = AR_ForceRotationVectX.X + AR_ForceRotationVectY.X + AR_ForceRotationVectZ.X;
    		AR_ForceRotation.Y = AR_ForceRotationVectX.Y + AR_ForceRotationVectY.Y + AR_ForceRotationVectZ.Y;
    		AR_ForceRotation.Z = AR_ForceRotationVectX.Z + AR_ForceRotationVectY.Z + AR_ForceRotationVectZ.Z;
    
    		AR_CurrentForward += AR_Acceleration * Throttle;
    		AR_ForwardSpeed = AR_CurrentForward * 2.2;
    		// AR_ForwardSpeed is not necessarily true - I'd optimally need to use some 
    		// calculation based off Velocity and current forwards direction Vector...
    
    		// Calculate lift for the biplane:
    		AR_Lift = (AR_ForwardSpeed + AR_AddedLiftSpeed) * Abs(Cos(Rotation.Pitch));
    		if (AR_Lift > AR_MaxLift) AR_Lift = AR_MaxLift;
    		
    		// This gives lift upwards relative to its up-axis and push forwards relative to its forward-axis:
    		AR_ForceApplication.X = AR_UpwardsNormal.X * AR_Lift + AR_CurrentForward * AR_ForwardsNormal.X;
    		AR_ForceApplication.Y = AR_UpwardsNormal.Y * AR_Lift + AR_CurrentForward * AR_ForwardsNormal.Y;
    		AR_ForceApplication.Z = AR_UpwardsNormal.Z * AR_Lift + AR_CurrentForward * AR_ForwardsNormal.Z;
    		
    		// Add forces and rotations
    		Mesh.AddForce(AR_ForceApplication);
    		Mesh.AddTorque(AR_ForceRotation);
    	}
    	else
    	{
    		AR_CurrentForward = AR_Speed; // Biplane propellor thrust sets to default
    	}
    }
    
    
    simulated function Tick(float DeltaTime)
    {
    	AirRaidKinematics(DeltaTime);
    	Super.Tick(DeltaTime);
    }
    
    /* etc */
    Note, to implement the aircraft 'properly' as UDK does, I have three classes: AR_Aircraft (extends UTAirVehicle), AR_AircraftContent (extends AR_Aircraft), and AR_AircraftFactory (extends UTVehicleFactory). For more information, look at the Cicada. The code for the AR_Aircraft class above should help anyone implement (very) rough aircraft physics.

    As mentioned, I changed the key bindings for my specific game inside UTInput.ini:
    Code:
    Bindings=(Name="SpaceBar",Command="GBA_Jump")
    Bindings=(Name="W",Command="GBA_MoveForward")
    Bindings=(Name="S",Command="GBA_Backward")
    Bindings=(Name="A",Command="GBA_StrafeLeft")
    Bindings=(Name="Q",Command="GBA_Duck")
    Bindings=(Name="E",Command="GBA_Jump")
    Bindings=(Name="D",Command="GBA_StrafeRight")
    Bindings=(Name="LeftControl",Command="GBA_Use")
    Q, E to roll.
    A, D to yaw.
    W, S to pitch (also gains speed).
    LeftControl to hop in or out (replaces E).
    (Without changing bindings, the normal controls would be C, Spacebar to roll)

    By all means, take the code, extend it, and reply to me with what you've done with it.

    Thanks; enjoy.

  5. #15
    KongWeezY
    Guest
    where is the AR_AircraftContent and AR_AircraftFactory code... can not get this to work...

  6. #16
    Syhon
    Guest
    Quote Originally Posted by KongWeezY View Post
    where is the AR_AircraftContent and AR_AircraftFactory code... can not get this to work...
    Your Factory and Content scripts should extend the ones I said, and the content is trivial, merely telling UDK what models you're going to be using. You would be best to write your own, but here's an example:
    Code:
    class AR_AircraftFactory extends UTVehicleFactory placeable;
    
    defaultproperties
    {
    	Begin Object Name=SVehicleMesh
    		SkeletalMesh=SkeletalMesh'AR_Content.AR_Biplane'
    		Translation=(X=-40.0,Y=0.0,Z=-70.0)
    	End Object
    
    
    	Begin Object Name=CollisionCylinder
    		CollisionHeight=+120.0
    		CollisionRadius=+200.0
    		Translation=(X=0.0,Y=0.0,Z=-40.0)
    	End Object
    
    	VehicleClassPath="AirRaid.AR_AircraftContent"
    	DrawScale=1
    }

  7. #17
    Hiredicespecter
    Guest
    Syhon, I have to thank you. Your post helped me to make my spaceship move. After a couple of weeks I ended up with this: http://www.youtube.com/watch?v=FdkKXo5b09U.
    For more details have a look at my Work in Progress thread, it's linked to in my sig.

  8. #18
    GentlemenGraphics
    Guest
    I have the code working and my airplane yaws, pitches and rotates but it does not move as in I cannot control it. I want to go foward then turn left then come into land can't do it because it is just acting like a helicopter up/down, yaw and pitch but it has no speed so I can't go forward or any other direction I can only face in different directions and it does move slightly on it own but without my control so it will just float away.

    Please help. Thanks.

  9. #19
    Hiredicespecter
    Guest
    @GentlemenGraphics: Could you post your code and a video showing the described behavior on youtube or the like? Otherwise it is nearly impossible to figure out your problem.

  10. #20
    GentlemenGraphics
    Guest
    Ok here's the three code files for the airplane:

    AR_Aircraft.uc

    class AR_Aircraft extends UTAirVehicle;

    /* etc */

    var float AR_MaxLift, AR_TurnSpeed, AR_Speed, AR_CurrentForward, AR_AddedLiftSpeed, AR_Acceleration;

    /* etc */

    simulated function AirRaidKinematics(float DeltaTime)
    {
    local Vector AR_ForceApplication, AR_ForceRotation, AR_ForwardsNormal, AR_UpwardsNormal, AR_SidewardsNormal;
    local Vector AR_ForceRotationVectX, AR_ForceRotationVectY, AR_ForceRotationVectZ;
    local float AR_Lift, AR_ForwardSpeed, AR_NewRise;

    // While there is a player in the biplane:
    if (PlayerController(Controller) != None)
    {
    GetAxes(Rotation, AR_ForwardsNormal, AR_SidewardsNormal, AR_UpwardsNormal);

    // It's probably unnecessary to normalise these:
    AR_ForceRotationVectX = Normal(AR_ForwardsNormal);
    AR_ForceRotationVectY = Normal(AR_SidewardsNormal);
    AR_ForceRotationVectZ = Normal(AR_UpwardsNormal);

    // Rise is NOT between -1 and 1, like it said it was
    AR_NewRise = 0;
    if (Rise != 0) AR_NewRise = Rise / Abs(Rise); // Avoid divide by 0

    // Calculate the XYZ components of the relative steering:
    // Generic controls Steering, Throttle and Rise are set by the controller

    // Roll
    AR_ForceRotationVectX.X *= 35 * -AR_NewRise; // Steering is between -1 and 1
    AR_ForceRotationVectX.Y *= 35 * -AR_NewRise; // Steering is between -1 and 1
    AR_ForceRotationVectX.Z *= 35 * -AR_NewRise; // Steering is between -1 and 1

    // Pitch
    AR_ForceRotationVectY.X *= 30 * Throttle; // Throttle is between -1 and 1
    AR_ForceRotationVectY.Y *= 30 * Throttle; // Throttle is between -1 and 1
    AR_ForceRotationVectY.Z *= 30 * Throttle; // Throttle is between -1 and 1

    // Yaw
    AR_ForceRotationVectZ.X *= 25 * -Steering; // AR_NewRise is between -1 and 1
    AR_ForceRotationVectZ.Y *= 25 * -Steering; // AR_NewRise is between -1 and 1
    AR_ForceRotationVectZ.Z *= 25 * -Steering; // AR_NewRise is between -1 and 1

    // Add them together to get final global rotation vector:
    AR_ForceRotation.X = AR_ForceRotationVectX.X + AR_ForceRotationVectY.X + AR_ForceRotationVectZ.X;
    AR_ForceRotation.Y = AR_ForceRotationVectX.Y + AR_ForceRotationVectY.Y + AR_ForceRotationVectZ.Y;
    AR_ForceRotation.Z = AR_ForceRotationVectX.Z + AR_ForceRotationVectY.Z + AR_ForceRotationVectZ.Z;

    AR_CurrentForward += AR_Acceleration * Throttle;
    AR_ForwardSpeed = AR_CurrentForward * 2.2;
    // AR_ForwardSpeed is not necessarily true - I'd optimally need to use some
    // calculation based off Velocity and current forwards direction Vector...

    // Calculate lift for the biplane:
    AR_Lift = (AR_ForwardSpeed + AR_AddedLiftSpeed) * Abs(Cos(Rotation.Pitch));
    if (AR_Lift > AR_MaxLift) AR_Lift = AR_MaxLift;

    // This gives lift upwards relative to its up-axis and push forwards relative to its forward-axis:
    AR_ForceApplication.X = AR_UpwardsNormal.X * AR_Lift + AR_CurrentForward * AR_ForwardsNormal.X;
    AR_ForceApplication.Y = AR_UpwardsNormal.Y * AR_Lift + AR_CurrentForward * AR_ForwardsNormal.Y;
    AR_ForceApplication.Z = AR_UpwardsNormal.Z * AR_Lift + AR_CurrentForward * AR_ForwardsNormal.Z;

    // Add forces and rotations
    Mesh.AddForce(AR_ForceApplication);
    Mesh.AddTorque(AR_ForceRotation);
    }
    else
    {
    AR_CurrentForward = AR_Speed; // Biplane propellor thrust sets to default
    }
    }


    simulated function Tick(float DeltaTime)
    {
    AirRaidKinematics(DeltaTime);
    Super.Tick(DeltaTime);
    }

    /* etc */

    UTVehicle_AR_Aircraft_Content.uc

    class UTVehicle_AR_Aircraft_Content extends AR_Aircraft;

    defaultproperties
    {
    Begin Object Name=CollisionCylinder
    CollisionHeight=+70.0
    CollisionRadius=+240.0
    Translation=(X=-40.0,Y=0.0,Z=40.0)
    End Object

    Begin Object Name=SVehicleMesh
    SkeletalMesh=SkeletalMesh'VH_Cicada.Mesh.SK_VH_Cic ada'
    AnimTreeTemplate=AnimTree'VH_Cicada.Anims.AT_VH_Ci cada'
    PhysicsAsset=PhysicsAsset'VH_Cicada.Mesh.SK_VH_Cic ada_Physics'
    AnimSets.Add(AnimSet'VH_Cicada.Anims.VH_Cicada_Ani ms')
    End Object

    DrawScale=1.3

    Health=500
    BigExplosionTemplates[0]=(Template=ParticleSystem'Envy_Effects.VH_Deaths.P _VH_Death_SMALL_Far',MinDistance=350)
    BigExplosionTemplates[1]=(Template=ParticleSystem'Envy_Effects.VH_Deaths.P _VH_Death_SMALL_Near')
    BigExplosionSocket=VH_Death

    Seats.Empty
    Seats(0)={( GunClass=class'UTVWeap_CicadaMissileLauncher',
    GunSocket=(Gun_Socket_02,Gun_Socket_01),
    CameraTag=ViewSocket,
    TurretControls=(LauncherA,LauncherB),
    CameraOffset=-400,
    CameraBaseOffset=(Z=25.0),
    SeatIconPos=(X=0.48,Y=0.25),
    GunPivotPoints=(Main),
    WeaponEffects=((SocketName=Gun_Socket_01,Offset=(X =-80),Scale3D=(X=12.0,Y=15.0,Z=15.0)),(SocketName=Gu n_Socket_02,Offset=(X=-80),Scale3D=(X=12.0,Y=15.0,Z=15.0)))
    )}

    Seats(1)={( GunClass=class'UTVWeap_CicadaTurret',
    GunSocket=(Turret_Gun_Socket_01,Turret_Gun_Socket_ 02,Turret_Gun_Socket_03,Turret_Gun_Socket_04),
    TurretVarPrefix="Turret",
    TurretControls=(Turret_Rotate),
    CameraTag=Turret_ViewSocket,
    CameraOffset=0,
    GunPivotPoints=(MainTurret_Pitch),
    CameraEyeHeight=0,
    SeatIconPos=(X=0.48,Y=0.56),
    ViewPitchMin=-14000.0,
    ViewPitchMax=1.0,
    WeaponEffects=((SocketName=Turret_Gun_Socket_04,Of fset=(X=-80),Scale3D=(X=8.0,Y=10.0,Z=10.0)),(SocketName=Tur ret_Gun_Socket_03,Offset=(X=-80),Scale3D=(X=8.0,Y=10.0,Z=10.0)))
    )}




    VehicleEffects.Empty

    VehicleEffects(0)=(EffectStartTag=TurretWeapon00,E ffectEndTag=STOP_TurretWeapon00,EffectTemplate=Par ticleSystem'VH_Cicada.Effects.P_VH_Cicada_2ndAltFl ash',EffectSocket=Turret_Gun_Socket_01)
    VehicleEffects(1)=(EffectStartTag=TurretWeapon01,E ffectEndTag=STOP_TurretWeapon01,EffectTemplate=Par ticleSystem'VH_Cicada.Effects.P_VH_Cicada_2ndAltFl ash',EffectSocket=Turret_Gun_Socket_02)
    VehicleEffects(2)=(EffectStartTag=TurretWeapon02,E ffectEndTag=STOP_TurretWeapon02,EffectTemplate=Par ticleSystem'VH_Cicada.Effects.P_VH_Cicada_2ndAltFl ash',EffectSocket=Turret_Gun_Socket_03)
    VehicleEffects(3)=(EffectStartTag=TurretWeapon03,E ffectEndTag=STOP_TurretWeapon03,EffectTemplate=Par ticleSystem'VH_Cicada.Effects.P_VH_Cicada_2ndAltFl ash',EffectSocket=Turret_Gun_Socket_04)

    VehicleEffects(4)=(EffectStartTag=EngineStart,Effe ctEndTag=EngineStop,EffectTemplate=ParticleSystem' VH_Cicada.Effects.P_VH_Cicada_GroundEffect',Effect Socket=GroundEffectBase)
    VehicleEffects(5)=(EffectStartTag=EngineStart,Effe ctEndTag=EngineStop,EffectTemplate=ParticleSystem' VH_Cicada.Effects.P_VH_Cicada_Exhaust',EffectSocke t=LeftExhaust)
    VehicleEffects(6)=(EffectStartTag=EngineStart,Effe ctEndTag=EngineStop,EffectTemplate=ParticleSystem' VH_Cicada.Effects.P_VH_Cicada_Exhaust',EffectSocke t=RightExhaust)
    VehicleEffects(7)=(EffectStartTag=DamageSmoke,Effe ctEndTag=NoDamageSmoke,bRestartRunning=false,Effec tTemplate=ParticleSystem'Envy_Effects.Vehicle_Dama ge.P_Vehicle_Damage_1_Cicada',EffectSocket=DamageS moke_01)

    VehicleAnims(0)=(AnimTag=Created,AnimSeqs=(InActiv eStill),AnimRate=1.0,bAnimLoopLastSeq=false,AnimPl ayerName=CicadaPlayer)
    VehicleAnims(1)=(AnimTag=EngineStart,AnimSeqs=(Get In),AnimRate=1.0,bAnimLoopLastSeq=false,AnimPlayer Name=CicadaPlayer)
    VehicleAnims(2)=(AnimTag=Idle,AnimSeqs=(Idle),Anim Rate=1.0,bAnimLoopLastSeq=true,AnimPlayerName=Cica daPlayer)
    VehicleAnims(3)=(AnimTag=EngineStop,AnimSeqs=(GetO ut),AnimRate=1.0,bAnimLoopLastSeq=false,AnimPlayer Name=CicadaPlayer)


    ContrailEffectIndices=(2,3,4,5,13,14)
    GroundEffectIndices=(10)

    // Sounds
    // Engine sound.
    Begin Object Class=AudioComponent Name=RaptorEngineSound
    SoundCue=SoundCue'A_Vehicle_Cicada.SoundCues.A_Veh icle_Cicada_EngineLoop'
    End Object
    EngineSound=RaptorEngineSound
    Components.Add(RaptorEngineSound);

    CollisionSound=SoundCue'A_Vehicle_Cicada.SoundCues .A_Vehicle_Cicada_Collide'
    EnterVehicleSound=SoundCue'A_Vehicle_Cicada.SoundC ues.A_Vehicle_Cicada_Start'
    ExitVehicleSound=SoundCue'A_Vehicle_Cicada.SoundCu es.A_Vehicle_Cicada_Stop'

    // Scrape sound.
    Begin Object Class=AudioComponent Name=BaseScrapeSound
    SoundCue=SoundCue'A_Gameplay.A_Gameplay_Onslaught_ MetalScrape01Cue'
    End Object
    ScrapeSound=BaseScrapeSound
    Components.Add(BaseScrapeSound);

    // Initialize sound parameters.
    EngineStartOffsetSecs=2.0
    EngineStopOffsetSecs=1.0

    IconCoords=(U=988,V=0,UL=33,VL=42)

    ExplosionSound=SoundCue'A_Vehicle_Cicada.SoundCues .A_Vehicle_Cicada_Explode'



    PassengerTeamBeaconOffset=(X=-125.0f,Y=0.0f,Z=-105.0f);
    ReferenceMovementMesh=StaticMesh'Envy_Effects.Mesh .S_Air_Wind_Ball'

    HudCoords=(U=106,V=125,UL=-106,VL=124)
    TeamMaterials[0]=MaterialInstanceConstant'VH_Cicada.Materials.MI_V H_Cicada_Red'
    TeamMaterials[1]=MaterialInstanceConstant'VH_Cicada.Materials.MI_V H_Cicada_Blue'

    BurnOutMaterial[0]=MaterialInterface'VH_Cicada.Materials.MITV_VH_Cic ada_Red_BO'
    BurnOutMaterial[1]=MaterialInterface'VH_Cicada.Materials.MITV_VH_Cic ada_Blue_BO'

    SpawnMaterialLists[0]=(Materials=(MaterialInterface'VH_Cicada.Materials .MI_VH_Cicada_Spawn_Red'))
    SpawnMaterialLists[1]=(Materials=(MaterialInterface'VH_Cicada.Materials .MI_VH_Cicada_Spawn_Blue'))

    DamageMorphTargets(0)=(InfluenceBone=Lt_Gun_Yaw,Mo rphNodeName=none,Health=150,DamagePropNames=(Damag e2))
    DamageMorphTargets(1)=(InfluenceBone=Rt_Gun_Yaw,Mo rphNodeName=none,Health=150,DamagePropNames=(Damag e2))
    DamageMorphTargets(2)=(InfluenceBone=FrontGuardDam age,MorphNodeName=none,Health=150,DamagePropNames= (Damage1))
    DamageMorphTargets(3)=(InfluenceBone=MainTurret_Ya w,MorphNodeName=none,Health=150,DamagePropNames=(D amage3))

    DamageParamScaleLevels(0)=(DamageParamName=Damage1 ,Scale=3)
    DamageParamScaleLevels(1)=(DamageParamName=Damage2 ,Scale=1.5)
    DamageParamScaleLevels(2)=(DamageParamName=Damage3 ,Scale=2.5)

    DrivingPhysicalMaterial=PhysicalMaterial'VH_Cicada .materials.physmat_Cicada_driving'
    DefaultPhysicalMaterial=PhysicalMaterial'VH_Cicada .materials.physmat_Cicada'

    bHasEnemyVehicleSound=true
    EnemyVehicleSound(0)=SoundNodeWave'A_Character_IGM ale.BotStatus.A_BotStatus_IGMale_EnemyCicada'
    }

    UTVehicleFactory_AR_Aicraft.uc

    class UTVehicleFactory_AR_Aicraft extends UTVehicleFactory placeable;

    defaultproperties
    {
    Begin Object Name=SVehicleMesh
    SkeletalMesh=SkeletalMesh'VH_Cicada.Mesh.SK_VH_Cic ada'
    Translation=(X=-40.0,Y=0.0,Z=-70.0)
    End Object


    Begin Object Name=CollisionCylinder
    CollisionHeight=+120.0
    CollisionRadius=+200.0
    Translation=(X=0.0,Y=0.0,Z=-40.0)
    End Object

    VehicleClassPath="UTGameContent.UTVehicle_AR_Aircr aft_Content"
    DrawScale=1

    }

    Thats the code. Please help me it's really important.

    Thanks.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •