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
}
내려받기
- 이 예제에서 사용된 콘텐츠와 코드 내려받기.
