UDN
Search public documentation:
MobileVehicleExampleKR
English Translation
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
모바일 비히클 예제
문서 변경내역: James Tan 작성. 홍성진 번역.
UDK 2011년 10월 버전으로 최종 테스팅
개요
관련 토픽
MobileVehicleGameInfo
class MobileVehicleGameInfo extends SimpleGame; function RestartPlayer(Controller NewPlayer) { local NavigationPoint StartSpot; local int Idx; local array<SequenceObject> Events; local SeqEvent_PlayerSpawned SpawnedEvent; local Vehicle Vehicle; if (bRestartLevel && WorldInfo.NetMode!= NM_DedicatedServer && WorldInfo.NetMode!= NM_ListenServer) { return; } StartSpot = FindPlayerStart(NewPlayer, 255); if (StartSpot == None) { if (NewPlayer.StartSpot != None) { StartSpot = NewPlayer.StartSpot; } else { return; } } if (NewPlayer.Pawn == None) { NewPlayer.Pawn = Spawn(class'MobileVehiclePawn',,, StartSpot.Location, StartSpot.Rotation); } if (NewPlayer.Pawn == None) { NewPlayer.GotoState('Dead'); if (PlayerController(NewPlayer) != None) { PlayerController(NewPlayer).ClientGotoState('Dead', 'Begin'); } } else { NewPlayer.Pawn.SetAnchor(StartSpot); if (PlayerController(NewPlayer) != None) { PlayerController(NewPlayer).TimeMargin = -0.1; StartSpot.AnchoredPawn = None; } NewPlayer.Pawn.LastStartSpot = PlayerStart(StartSpot); NewPlayer.Pawn.LastStartTime = WorldInfo.TimeSeconds; NewPlayer.Possess(NewPlayer.Pawn, false); NewPlayer.ClientSetRotation(NewPlayer.Pawn.Rotation, true); SetPlayerDefaults(NewPlayer.Pawn); if (WorldInfo.GetGameSequence() != None) { WorldInfo.GetGameSequence().FindSeqObjectsByClass(class'SeqEvent_PlayerSpawned', true, Events); for (Idx = 0; Idx < Events.Length; Idx++) { SpawnedEvent = SeqEvent_PlayerSpawned(Events[Idx]); if (SpawnedEvent != None && SpawnedEvent.CheckActivate(NewPlayer,NewPlayer)) { SpawnedEvent.SpawnPoint = startSpot; SpawnedEvent.PopulateLinkedVariableValues(); } } } NewPlayer.Pawn.SetCollision(false, false, false); Vehicle = Spawn(class'MobileVehicleScorpion',,, StartSpot.Location, StartSpot.Rotation); if (Vehicle != None) { Vehicle.TryToDrive(NewPlayer.Pawn); } } } defaultproperties { PlayerControllerClass=class'MobileVehiclePlayerController' }
MobileVehiclePawn
class MobileVehiclePawn extends SimplePawn; event TickSpecial(float DeltaTime); defaultproperties { }
MobileVehiclePlayerController
class MobileVehiclePlayerController extends SimplePC; function PlayerTick(float DeltaTime) { Super(GamePlayerController).PlayerTick(DeltaTime); } state PlayerDriving { ignores SeePlayer, HearNoise, Bump; function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot); function ProcessDrive(float InForward, float InStrafe, float InUp, bool InJump) { local Vehicle CurrentVehicle; CurrentVehicle = Vehicle(Pawn); if (CurrentVehicle != None) { bPressedJump = InJump; CurrentVehicle.SetInputs(InForward, -InStrafe, InUp); CheckJumpOrDuck(); } } function PlayerMove(float DeltaTime) { local float Forward, Strafe; UpdateRotation(DeltaTime); // 포워드 입력 정보 구하기 Forward = PlayerInput.aForward; // 스트레이프 입력 정보 구하기 Strafe = PlayerInput.aStrafe; if (PlayerInput != None) { Forward = (((PlayerInput.aTilt.X * UnrRotToDeg) - 30.f) / 50.f) * -1.f; Strafe = (PlayerInput.aTilt.Z * UnrRotToDeg) / 20.f; } // 포워드 값을 -1.f 에서 1.f 범위로 제한 Forward = FClamp(Forward, -1.f, 1.f); // 스트레이프 값을 -1.f 에서 1.f 범위로 제한 Strafe = FClamp(Strafe, -1.f, 1.f); ProcessDrive(Forward, Strafe, PlayerInput.aUp, bPressedJump); if (Role < ROLE_Authority) { ServerDrive(PlayerInput.aForward, PlayerInput.aStrafe, PlayerInput.aUp, bPressedJump, ((Rotation.Yaw & 65535) << 16) + (Rotation.Pitch & 65535)); } bPressedJump = false; } event BeginState(Name PreviousStateName) { CleanOutSavedMoves(); } event EndState(Name NextStateName) { CleanOutSavedMoves(); } } defaultproperties { }
MobileVehicleScorpion
class MobileVehicleScorpion extends SVehicle; var DynamicLightEnvironmentComponent LightEnvironment; defaultproperties { Health=300 COMOffset=(X=-40.f,Y=0.f,Z=-36.f) UprightLiftStrength=280.f UprightTime=1.25f UprightTorqueStrength=500.f bCanFlip=true bHasHandbrake=true GroundSpeed=950 AirSpeed=1100 HeavySuspensionShiftPercent=0.75f MomentumMult=0.5f NonPreferredVehiclePathMultiplier=1.5f DrawScale=1.2f bAlwaysRelevant=true SquealThreshold=0.1f SquealLatThreshold=0.f2f LatAngleVolumeMult=30.f EngineStartOffsetSecs=2.f EngineStopOffsetSecs=1.f bAttachDriver=false BaseEyeheight=30 Eyeheight=30 Begin Object Class=AudioComponent Name=ScorpionEngineSound SoundCue=SoundCue'MobileVehicleContent.Sounds.ScorpionEngineLoopSoundCue' End Object EngineSound=ScorpionEngineSound Components.Add(ScorpionEngineSound); Begin Object Class=AudioComponent Name=ScorpionSquealSound SoundCue=SoundCue'MobileVehicleContent.Sounds.ScorpionSlideSoundCue' End Object SquealSound=ScorpionSquealSound Components.Add(ScorpionSquealSound); CollisionSound=SoundCue'MobileVehicleContent.Sounds.ScorpionCollideSoundCue' EnterVehicleSound=SoundCue'MobileVehicleContent.Sounds.ScorpionStartSoundCue' Begin Object Name=CollisionCylinder BlockNonZeroExtent=false BlockZeroExtent=false BlockActors=false BlockRigidBody=false CollideActors=false CollisionHeight=40.f CollisionRadius=100.f Translation=(X=-25.f) End Object Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment bSynthesizeSHLight=true bIsCharacterLightEnvironment=true bUseBooleanEnvironmentShadowing=true End Object Components.Add(MyLightEnvironment) LightEnvironment=MyLightEnvironment Begin Object Name=SVehicleMesh CastShadow=true bCastDynamicShadow=true bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bPerBoneMotionBlur=true LightEnvironment=MyLightEnvironment SkeletalMesh=SkeletalMesh'MobileVehicleContent.SkeletalMeshes.ScorpionSkeletalMesh' AnimTreeTemplate=AnimTree'MobileVehicleContent.AnimTrees.ScorpionAnimTree' PhysicsAsset=PhysicsAsset'MobileVehicleContent.PhysicsAssets.ScorpionPhysicsAsset' AnimSets.Add(AnimSet'MobileVehicleContent.AnimSets.ScorpionAnimSet') RBCollideWithChannels=(Default=true,BlockingVolume=true,GameplayPhysics=true,EffectPhysics=true,Vehicle=true,Untitled4=true) End Object Begin Object Class=UDKVehicleSimCar Name=SimObject WheelSuspensionStiffness=100.f WheelSuspensionDamping=3.f WheelSuspensionBias=0.1f ChassisTorqueScale=0.f MaxBrakeTorque=5.f StopThreshold=100 MaxSteerAngleCurve=(Points=((InVal=0.f,OutVal=45.f),(InVal=600.f,OutVal=15.f),(InVal=1100.f,OutVal=10.f),(InVal=1300.f,OutVal=6.f),(InVal=1600.f,OutVal=1.f))) SteerSpeed=110 LSDFactor=0.f TorqueVSpeedCurve=(Points=((InVal=-600.f,OutVal=0.f),(InVal=-300.f,OutVal=80.f),(InVal=0.f,OutVal=130.f),(InVal=950.f,OutVal=130.f),(InVal=1050.f,OutVal=10.f),(InVal=1150.f,OutVal=0.f))) EngineRPMCurve=(Points=((InVal=-500.f,OutVal=2500.f),(InVal=0.f,OutVal=500.f),(InVal=549.f,OutVal=3500.f),(InVal=550.f,OutVal=1000.f),(InVal=849.f,OutVal=4500.f),(InVal=850.f,OutVal=1500.f),(InVal=1100.f,OutVal=5000.f))) EngineBrakeFactor=0.f25f ThrottleSpeed=0.2f WheelInertia=0.2f NumWheelsForFullSteering=4 SteeringReductionFactor=0.f SteeringReductionMinSpeed=1100.f SteeringReductionSpeed=1400.f bAutoHandbrake=true bClampedFrictionModel=true FrontalCollisionGripFactor=0.18f ConsoleHardTurnGripFactor=1.f HardTurnMotorTorque=0.7f SpeedBasedTurnDamping=20.f AirControlTurnTorque=40.f InAirUprightMaxTorque=15.f InAirUprightTorqueFactor=-30.f WheelLongExtremumSlip=0.1f WheelLongExtremumValue=1.f WheelLongAsymptoteSlip=2.f WheelLongAsymptoteValue=0.6f WheelLatExtremumSlip=0.35f WheelLatExtremumValue=0.9f WheelLatAsymptoteSlip=1.4f WheelLatAsymptoteValue=0.9f bAutoDrive=false AutoDriveSteer=0.3f End Object SimObj=SimObject Components.Add(SimObject) Begin Object Class=MobileVehicleScorpionWheel Name=RRWheel BoneName="B_R_Tire" BoneOffset=(X=0.f,Y=20.f,Z=0.f) SkelControlName="B_R_Tire_Cont" End Object Wheels(0)=RRWheel Begin Object Class=MobileVehicleScorpionWheel Name=LRWheel BoneName="B_L_Tire" BoneOffset=(X=0.f,Y=-20.f,Z=0.f) SkelControlName="B_L_Tire_Cont" End Object Wheels(1)=LRWheel Begin Object Class=MobileVehicleScorpionWheel Name=RFWheel BoneName="F_R_Tire" BoneOffset=(X=0.f,Y=20.f,Z=0.f) SteerFactor=1.f LongSlipFactor=2.f LatSlipFactor=3.f HandbrakeLongSlipFactor=0.8 HandbrakeLatSlipFactor=0.8 SkelControlName="F_R_Tire_Cont" End Object Wheels(2)=RFWheel Begin Object Class=MobileVehicleScorpionWheel Name=LFWheel BoneName="F_L_Tire" BoneOffset=(X=0.f,Y=-20.f,Z=0.f) SteerFactor=1.f LongSlipFactor=2.f LatSlipFactor=3.f HandbrakeLongSlipFactor=0.8f HandbrakeLatSlipFactor=0.8f SkelControlName="F_L_Tire_Cont" End Object Wheels(3)=LFWheel }
MobileVehicleScorpionWheel
class MobileVehicleScorpionWheel extends UDKVehicleWheel; defaultproperties { WheelRadius=27 SuspensionTravel=40 bPoweredWheel=true SteerFactor=0.0 LongSlipFactor=2.0 LatSlipFactor=2.75 HandbrakeLongSlipFactor=0.7 HandbrakeLatSlipFactor=0.3 ParkedSlipFactor=10.0 }
내려받기
- 이 예제에서 사용된 콘텐츠와 코드 내려받기.