Initial commit
This commit is contained in:
1 parent
ee9615239e
commit
16feac691f
4093 files changed
+1030491
No files matched your search
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8c32f58513a41ef4dab9cb7704c5fb92
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 943e057eaae705e43b9e9b2e53d6adb0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2dac79461900e0f4c93561031c2e6902
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+23
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 42e65e088b3f4374e851b8dbd38f3df9
|
||||
timeCreated: 1552427267
|
||||
licenseType: Store
|
||||
AudioImporter:
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 0
|
||||
compressionFormat: 0
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+23
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bc94ec6ed537e743b481638bdcd503d
|
||||
timeCreated: 1552427284
|
||||
licenseType: Store
|
||||
AudioImporter:
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 0
|
||||
compressionFormat: 0
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+23
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a9383dda6cabc047b7a297602e93eb4
|
||||
timeCreated: 1552427285
|
||||
licenseType: Store
|
||||
AudioImporter:
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 0
|
||||
compressionFormat: 0
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+23
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9714160ce34f2b4ab63ff8c27bd68e1
|
||||
timeCreated: 1552427285
|
||||
licenseType: Store
|
||||
AudioImporter:
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 0
|
||||
compressionFormat: 0
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+22
@@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e909d08c1a0a20e4ebb4988b8d0e0f3c
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+22
@@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 859ea5b3accb9d64785ffc7480fd9323
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+16
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5897aeed9b676024fbb8c694b421a861
|
||||
AudioImporter:
|
||||
serializedVersion: 5
|
||||
format: -1
|
||||
loadType: 1
|
||||
quality: -1
|
||||
sampleRate: 0
|
||||
forceToMono: 0
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
overrideSampleRate: 0
|
||||
optimizeSampleRate: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+22
@@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f18861a914031a94da03588710655a7a
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Binary file not shown.
+16
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b09d59f4499d45428baa7a21e954296
|
||||
AudioImporter:
|
||||
serializedVersion: 5
|
||||
format: -1
|
||||
loadType: 1
|
||||
quality: -1
|
||||
sampleRate: 0
|
||||
forceToMono: 0
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
overrideSampleRate: 0
|
||||
optimizeSampleRate: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+22
@@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db8c613281f4e2f4ba3db6a36819dcb7
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
The first-person character is a single prefab which is designed to be used as-is. There's usually no need to create your own from the separate scripts provided. Just drop the prefab into your scene and you're good to go.
|
||||
|
||||
|
||||
The simplest way to get started with the First Person Character is to follow these steps:
|
||||
|
||||
1) Start with a suitable scene. There ought to be enough flat ground to walk around on.
|
||||
|
||||
2) Place the "FirstPersonCharacter" prefab in the scene.
|
||||
|
||||
3) If present, delete the "Main Camera" that exists in new scenes by default. The First Person Character prefab contains its own camera, so you don't need the default camera, or any of the camera rigs to use it.
|
||||
|
||||
The first-person character is made up of a few components acting together. The FirstPersonCharacter script provides the functionality of moving, strafing and jumping. The SimpleMouseRotator provides the functionality of turning the body of the character left and right, and another copy of the same script on the "FirstPersonCamera" controls the looking-up-and-down effect.
|
||||
|
||||
There is also an optional "Head Bob" script which provides a head bobbing effect and optionally also plays footstep sounds in sync with the head bobbing. This script can be disabled or removed if required.
|
||||
|
||||
There are a number of simple adjustable settings on each component allowing you to change the movement speed, jump power, head bob style, and more. For more detail about each setting, see the comments in each script.
|
||||
|
||||
The Character script also requires references to "zero friction" and "max friction" physics materials. These are provided already set-up for you.
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc9b000e9b8028247bd816e159382646
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0bfb2599080d5d24e84362b4ae314ae7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+383
@@ -0,0 +1,383 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &100000
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 400000}
|
||||
- component: {fileID: 14300000}
|
||||
- component: {fileID: 11400000}
|
||||
- component: {fileID: 5400000}
|
||||
- component: {fileID: 8200000}
|
||||
m_Layer: 0
|
||||
m_Name: FPSController
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &400000
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100000}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 400002}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!143 &14300000
|
||||
CharacterController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100000}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Height: 1.8
|
||||
m_Radius: 0.5
|
||||
m_SlopeLimit: 45
|
||||
m_StepOffset: 0.3
|
||||
m_SkinWidth: 0.08
|
||||
m_MinMoveDistance: 0
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100000}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 05ec5cf00ca181d45a42ba1870e148c3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_IsWalking: 0
|
||||
m_WalkSpeed: 5
|
||||
m_RunSpeed: 10
|
||||
m_RunstepLenghten: 0.7
|
||||
m_JumpSpeed: 10
|
||||
m_StickToGroundForce: 10
|
||||
m_GravityMultiplier: 2
|
||||
m_MouseLook:
|
||||
XSensitivity: 2
|
||||
YSensitivity: 2
|
||||
clampVerticalRotation: 1
|
||||
MinimumX: -90
|
||||
MaximumX: 90
|
||||
smooth: 0
|
||||
smoothTime: 5
|
||||
lockCursor: 1
|
||||
m_UseFovKick: 1
|
||||
m_FovKick:
|
||||
Camera: {fileID: 0}
|
||||
originalFov: 0
|
||||
FOVIncrease: 3
|
||||
TimeToIncrease: 1
|
||||
TimeToDecrease: 1
|
||||
IncreaseCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 1
|
||||
inSlope: 2
|
||||
outSlope: 2
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
m_UseHeadBob: 1
|
||||
m_HeadBob:
|
||||
HorizontalBobRange: 0.1
|
||||
VerticalBobRange: 0.1
|
||||
Bobcurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 0.5
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1.5
|
||||
value: -1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 2
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
VerticaltoHorizontalRatio: 2
|
||||
m_JumpBob:
|
||||
BobDuration: 0.2
|
||||
BobAmount: 0.1
|
||||
m_StepInterval: 5
|
||||
m_FootstepSounds:
|
||||
- {fileID: 8300000, guid: e909d08c1a0a20e4ebb4988b8d0e0f3c, type: 3}
|
||||
- {fileID: 8300000, guid: 859ea5b3accb9d64785ffc7480fd9323, type: 3}
|
||||
m_JumpSound: {fileID: 8300000, guid: f18861a914031a94da03588710655a7a, type: 3}
|
||||
m_LandSound: {fileID: 8300000, guid: db8c613281f4e2f4ba3db6a36819dcb7, type: 3}
|
||||
--- !u!54 &5400000
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100000}
|
||||
serializedVersion: 2
|
||||
m_Mass: 1
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 1
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!82 &8200000
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100000}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: 0}
|
||||
m_audioClip: {fileID: 0}
|
||||
m_PlayOnAwake: 1
|
||||
m_Volume: 1
|
||||
m_Pitch: 1
|
||||
Loop: 0
|
||||
Mute: 0
|
||||
Spatialize: 0
|
||||
SpatializePostEffects: 0
|
||||
Priority: 128
|
||||
DopplerLevel: 1
|
||||
MinDistance: 1
|
||||
MaxDistance: 500
|
||||
Pan2D: 0
|
||||
rolloffMode: 0
|
||||
BypassEffects: 0
|
||||
BypassListenerEffects: 0
|
||||
BypassReverbZones: 0
|
||||
rolloffCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
- serializedVersion: 3
|
||||
time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
panLevelCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 0
|
||||
spreadCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 0
|
||||
reverbZoneMixCustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- serializedVersion: 3
|
||||
time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
weightedMode: 0
|
||||
inWeight: 0.33333334
|
||||
outWeight: 0.33333334
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 0
|
||||
--- !u!1 &100002
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 400002}
|
||||
- component: {fileID: 2000000}
|
||||
- component: {fileID: 8100000}
|
||||
- component: {fileID: 12474086}
|
||||
m_Layer: 0
|
||||
m_Name: FirstPersonCharacter
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &400002
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100002}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.8, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 400000}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!20 &2000000
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100002}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_FocalLength: 50
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 0
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!81 &8100000
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100002}
|
||||
m_Enabled: 1
|
||||
--- !u!124 &12474086
|
||||
Behaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 100002}
|
||||
m_Enabled: 1
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5e9e851c0e142814dac026a256ba2ac0
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+260
@@ -0,0 +1,260 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &100004
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 4
|
||||
m_Component:
|
||||
- 4: {fileID: 400000}
|
||||
- 20: {fileID: 2000000}
|
||||
- 81: {fileID: 8100000}
|
||||
- 114: {fileID: 11400006}
|
||||
- 124: {fileID: 12410568}
|
||||
m_Layer: 0
|
||||
m_Name: MainCamera
|
||||
m_TagString: MainCamera
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!1 &100006
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 4
|
||||
m_Component:
|
||||
- 4: {fileID: 400002}
|
||||
- 54: {fileID: 5400000}
|
||||
- 136: {fileID: 13600000}
|
||||
- 114: {fileID: 11400004}
|
||||
m_Layer: 0
|
||||
m_Name: RigidBodyFPSController
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &400000
|
||||
Transform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100004}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.6, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 400002}
|
||||
m_RootOrder: 0
|
||||
--- !u!4 &400002
|
||||
Transform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100006}
|
||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 400000}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
--- !u!20 &2000000
|
||||
Camera:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100004}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 1
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
m_StereoMirrorMode: 0
|
||||
--- !u!54 &5400000
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100006}
|
||||
serializedVersion: 2
|
||||
m_Mass: 10
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!81 &8100000
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100004}
|
||||
m_Enabled: 1
|
||||
--- !u!114 &11400004
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100006}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 81c9795a96c094f4cbde4d65546aa9b2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
cam: {fileID: 2000000}
|
||||
movementSettings:
|
||||
ForwardSpeed: 8
|
||||
BackwardSpeed: 4
|
||||
StrafeSpeed: 4
|
||||
RunMultiplier: 2
|
||||
RunKey: 304
|
||||
JumpForce: 50
|
||||
SlopeCurveModifier:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- time: -90
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
- time: 0
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
- time: 90
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
CurrentTargetSpeed: 8
|
||||
mouseLook:
|
||||
XSensitivity: 2
|
||||
YSensitivity: 2
|
||||
clampVerticalRotation: 1
|
||||
MinimumX: -45
|
||||
MaximumX: 90
|
||||
smooth: 1
|
||||
smoothTime: 18
|
||||
lockCursor: 1
|
||||
advancedSettings:
|
||||
groundCheckDistance: 0.1
|
||||
stickToGroundHelperDistance: 0.6
|
||||
slowDownRate: 20
|
||||
airControl: 0
|
||||
shellOffset: 0
|
||||
--- !u!114 &11400006
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100004}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 83c81407209f85e4c87c0cda8b32868e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Camera: {fileID: 2000000}
|
||||
motionBob:
|
||||
HorizontalBobRange: 0.1
|
||||
VerticalBobRange: 0.05
|
||||
Bobcurve:
|
||||
serializedVersion: 2
|
||||
m_Curve:
|
||||
- time: 0
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
- time: 0.5
|
||||
value: 1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
- time: 1
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
- time: 1.5
|
||||
value: -1
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
- time: 2
|
||||
value: 0
|
||||
inSlope: 0
|
||||
outSlope: 0
|
||||
tangentMode: 0
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
VerticaltoHorizontalRatio: 2
|
||||
jumpAndLandingBob:
|
||||
BobDuration: 0.15
|
||||
BobAmount: 0.2
|
||||
rigidbodyFirstPersonController: {fileID: 11400004}
|
||||
StrideInterval: 4
|
||||
RunningStrideLengthen: 0.722
|
||||
--- !u!124 &12410568
|
||||
Behaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100004}
|
||||
m_Enabled: 1
|
||||
--- !u!136 &13600000
|
||||
CapsuleCollider:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 100006}
|
||||
m_Material: {fileID: 13400000, guid: c2815a7ab32e42c4bb42f59caacb8ec1, type: 2}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
m_Radius: 0.5
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &100100000
|
||||
Prefab:
|
||||
m_ObjectHideFlags: 1
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications: []
|
||||
m_RemovedComponents: []
|
||||
m_ParentPrefab: {fileID: 0}
|
||||
m_RootGameObject: {fileID: 100006}
|
||||
m_IsPrefabParent: 1
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6453f8e1f814744d8b94e5a6d1f9942
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 314f49b24dc9d5d40956a7b28c67b237
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+259
@@ -0,0 +1,259 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityStandardAssets.CrossPlatformInput;
|
||||
using UnityStandardAssets.Utility;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace UnityStandardAssets.Characters.FirstPerson
|
||||
{
|
||||
[RequireComponent(typeof (CharacterController))]
|
||||
[RequireComponent(typeof (AudioSource))]
|
||||
public class FirstPersonController : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private bool m_IsWalking = true;
|
||||
[SerializeField] private float m_WalkSpeed = 0f;
|
||||
[SerializeField] private float m_RunSpeed = 0f;
|
||||
[SerializeField] [Range(0f, 1f)] private float m_RunstepLenghten = 0f;
|
||||
[SerializeField] private float m_JumpSpeed = 0f;
|
||||
[SerializeField] private float m_StickToGroundForce = 0f;
|
||||
[SerializeField] private float m_GravityMultiplier = 0f;
|
||||
[SerializeField] private MouseLook m_MouseLook = new MouseLook();
|
||||
[SerializeField] private bool m_UseFovKick = true;
|
||||
[SerializeField] private FOVKick m_FovKick = new FOVKick();
|
||||
[SerializeField] private bool m_UseHeadBob = true;
|
||||
[SerializeField] private CurveControlledBob m_HeadBob = new CurveControlledBob();
|
||||
[SerializeField] private LerpControlledBob m_JumpBob = new LerpControlledBob();
|
||||
[SerializeField] private float m_StepInterval = 0f;
|
||||
[SerializeField] private AudioClip[] m_FootstepSounds = new AudioClip[0]; // an array of footstep sounds that will be randomly selected from.
|
||||
[SerializeField] private AudioClip m_JumpSound = null; // the sound played when character leaves the ground.
|
||||
[SerializeField] private AudioClip m_LandSound = null; // the sound played when character touches back on ground.
|
||||
|
||||
private Camera m_Camera;
|
||||
private bool m_Jump = true;
|
||||
private float m_YRotation;
|
||||
private Vector2 m_Input = new Vector2();
|
||||
private Vector3 m_MoveDir = Vector3.zero;
|
||||
private CharacterController m_CharacterController = new CharacterController();
|
||||
private CollisionFlags m_CollisionFlags = CollisionFlags.None;
|
||||
private bool m_PreviouslyGrounded = false;
|
||||
private Vector3 m_OriginalCameraPosition = Vector3.zero;
|
||||
private float m_StepCycle = 0f;
|
||||
private float m_NextStep = 0f;
|
||||
private bool m_Jumping = false;
|
||||
private AudioSource m_AudioSource = new AudioSource();
|
||||
|
||||
// Use this for initialization
|
||||
private void Start()
|
||||
{
|
||||
m_CharacterController = GetComponent<CharacterController>();
|
||||
m_Camera = Camera.main;
|
||||
m_OriginalCameraPosition = m_Camera.transform.localPosition;
|
||||
m_FovKick.Setup(m_Camera);
|
||||
m_HeadBob.Setup(m_Camera, m_StepInterval);
|
||||
m_StepCycle = 0f;
|
||||
m_NextStep = m_StepCycle/2f;
|
||||
m_Jumping = false;
|
||||
m_AudioSource = GetComponent<AudioSource>();
|
||||
m_MouseLook.Init(transform , m_Camera.transform);
|
||||
}
|
||||
|
||||
|
||||
// Update is called once per frame
|
||||
private void Update()
|
||||
{
|
||||
RotateView();
|
||||
// the jump state needs to read here to make sure it is not missed
|
||||
if (!m_Jump)
|
||||
{
|
||||
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
|
||||
}
|
||||
|
||||
if (!m_PreviouslyGrounded && m_CharacterController.isGrounded)
|
||||
{
|
||||
StartCoroutine(m_JumpBob.DoBobCycle());
|
||||
PlayLandingSound();
|
||||
m_MoveDir.y = 0f;
|
||||
m_Jumping = false;
|
||||
}
|
||||
if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded)
|
||||
{
|
||||
m_MoveDir.y = 0f;
|
||||
}
|
||||
|
||||
m_PreviouslyGrounded = m_CharacterController.isGrounded;
|
||||
}
|
||||
|
||||
|
||||
private void PlayLandingSound()
|
||||
{
|
||||
m_AudioSource.clip = m_LandSound;
|
||||
m_AudioSource.Play();
|
||||
m_NextStep = m_StepCycle + .5f;
|
||||
}
|
||||
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
float speed;
|
||||
GetInput(out speed);
|
||||
// always move along the camera forward as it is the direction that it being aimed at
|
||||
Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x;
|
||||
|
||||
// get a normal for the surface that is being touched to move along it
|
||||
RaycastHit hitInfo;
|
||||
Physics.SphereCast(transform.position, m_CharacterController.radius, Vector3.down, out hitInfo,
|
||||
m_CharacterController.height/2f, Physics.AllLayers, QueryTriggerInteraction.Ignore);
|
||||
desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized;
|
||||
|
||||
m_MoveDir.x = desiredMove.x*speed;
|
||||
m_MoveDir.z = desiredMove.z*speed;
|
||||
|
||||
|
||||
if (m_CharacterController.isGrounded)
|
||||
{
|
||||
m_MoveDir.y = -m_StickToGroundForce;
|
||||
|
||||
if (m_Jump)
|
||||
{
|
||||
m_MoveDir.y = m_JumpSpeed;
|
||||
PlayJumpSound();
|
||||
m_Jump = false;
|
||||
m_Jumping = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime;
|
||||
}
|
||||
m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime);
|
||||
|
||||
ProgressStepCycle(speed);
|
||||
UpdateCameraPosition(speed);
|
||||
|
||||
m_MouseLook.UpdateCursorLock();
|
||||
}
|
||||
|
||||
|
||||
private void PlayJumpSound()
|
||||
{
|
||||
m_AudioSource.clip = m_JumpSound;
|
||||
m_AudioSource.Play();
|
||||
}
|
||||
|
||||
|
||||
private void ProgressStepCycle(float speed)
|
||||
{
|
||||
if (m_CharacterController.velocity.sqrMagnitude > 0 && (m_Input.x != 0 || m_Input.y != 0))
|
||||
{
|
||||
m_StepCycle += (m_CharacterController.velocity.magnitude + (speed*(m_IsWalking ? 1f : m_RunstepLenghten)))*
|
||||
Time.fixedDeltaTime;
|
||||
}
|
||||
|
||||
if (!(m_StepCycle > m_NextStep))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_NextStep = m_StepCycle + m_StepInterval;
|
||||
|
||||
PlayFootStepAudio();
|
||||
}
|
||||
|
||||
|
||||
private void PlayFootStepAudio()
|
||||
{
|
||||
if (!m_CharacterController.isGrounded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// pick & play a random footstep sound from the array,
|
||||
// excluding sound at index 0
|
||||
int n = Random.Range(1, m_FootstepSounds.Length);
|
||||
m_AudioSource.clip = m_FootstepSounds[n];
|
||||
m_AudioSource.PlayOneShot(m_AudioSource.clip);
|
||||
// move picked sound to index 0 so it's not picked next time
|
||||
m_FootstepSounds[n] = m_FootstepSounds[0];
|
||||
m_FootstepSounds[0] = m_AudioSource.clip;
|
||||
}
|
||||
|
||||
|
||||
private void UpdateCameraPosition(float speed)
|
||||
{
|
||||
Vector3 newCameraPosition;
|
||||
if (!m_UseHeadBob)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (m_CharacterController.velocity.magnitude > 0 && m_CharacterController.isGrounded)
|
||||
{
|
||||
m_Camera.transform.localPosition =
|
||||
m_HeadBob.DoHeadBob(m_CharacterController.velocity.magnitude +
|
||||
(speed*(m_IsWalking ? 1f : m_RunstepLenghten)));
|
||||
newCameraPosition = m_Camera.transform.localPosition;
|
||||
newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset();
|
||||
}
|
||||
else
|
||||
{
|
||||
newCameraPosition = m_Camera.transform.localPosition;
|
||||
newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset();
|
||||
}
|
||||
m_Camera.transform.localPosition = newCameraPosition;
|
||||
}
|
||||
|
||||
|
||||
private void GetInput(out float speed)
|
||||
{
|
||||
// Read input
|
||||
float horizontal = CrossPlatformInputManager.GetAxis("Horizontal");
|
||||
float vertical = CrossPlatformInputManager.GetAxis("Vertical");
|
||||
|
||||
bool waswalking = m_IsWalking;
|
||||
|
||||
#if !MOBILE_INPUT
|
||||
// On standalone builds, walk/run speed is modified by a key press.
|
||||
// keep track of whether or not the character is walking or running
|
||||
m_IsWalking = !Input.GetKey(KeyCode.LeftShift);
|
||||
#endif
|
||||
// set the desired speed to be walking or running
|
||||
speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed;
|
||||
m_Input = new Vector2(horizontal, vertical);
|
||||
|
||||
// normalize input if it exceeds 1 in combined length:
|
||||
if (m_Input.sqrMagnitude > 1)
|
||||
{
|
||||
m_Input.Normalize();
|
||||
}
|
||||
|
||||
// handle speed change to give an fov kick
|
||||
// only if the player is going to a run, is running and the fovkick is to be used
|
||||
if (m_IsWalking != waswalking && m_UseFovKick && m_CharacterController.velocity.sqrMagnitude > 0)
|
||||
{
|
||||
StopAllCoroutines();
|
||||
StartCoroutine(!m_IsWalking ? m_FovKick.FOVKickUp() : m_FovKick.FOVKickDown());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void RotateView()
|
||||
{
|
||||
m_MouseLook.LookRotation (transform, m_Camera.transform);
|
||||
}
|
||||
|
||||
|
||||
private void OnControllerColliderHit(ControllerColliderHit hit)
|
||||
{
|
||||
Rigidbody body = hit.collider.attachedRigidbody;
|
||||
//dont move the rigidbody if the character is on top of it
|
||||
if (m_CollisionFlags == CollisionFlags.Below)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (body == null || body.isKinematic)
|
||||
{
|
||||
return;
|
||||
}
|
||||
body.AddForceAtPosition(m_CharacterController.velocity*0.1f, hit.point, ForceMode.Impulse);
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05ec5cf00ca181d45a42ba1870e148c3
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityStandardAssets.Utility;
|
||||
|
||||
namespace UnityStandardAssets.Characters.FirstPerson
|
||||
{
|
||||
public class HeadBob : MonoBehaviour
|
||||
{
|
||||
public Camera Camera;
|
||||
public CurveControlledBob motionBob = new CurveControlledBob();
|
||||
public LerpControlledBob jumpAndLandingBob = new LerpControlledBob();
|
||||
public RigidbodyFirstPersonController rigidbodyFirstPersonController;
|
||||
public float StrideInterval;
|
||||
[Range(0f, 1f)] public float RunningStrideLengthen;
|
||||
|
||||
// private CameraRefocus m_CameraRefocus;
|
||||
private bool m_PreviouslyGrounded;
|
||||
private Vector3 m_OriginalCameraPosition;
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
motionBob.Setup(Camera, StrideInterval);
|
||||
m_OriginalCameraPosition = Camera.transform.localPosition;
|
||||
// m_CameraRefocus = new CameraRefocus(Camera, transform.root.transform, Camera.transform.localPosition);
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// m_CameraRefocus.GetFocusPoint();
|
||||
Vector3 newCameraPosition;
|
||||
if (rigidbodyFirstPersonController.Velocity.magnitude > 0 && rigidbodyFirstPersonController.Grounded)
|
||||
{
|
||||
Camera.transform.localPosition = motionBob.DoHeadBob(rigidbodyFirstPersonController.Velocity.magnitude*(rigidbodyFirstPersonController.Running ? RunningStrideLengthen : 1f));
|
||||
newCameraPosition = Camera.transform.localPosition;
|
||||
newCameraPosition.y = Camera.transform.localPosition.y - jumpAndLandingBob.Offset();
|
||||
}
|
||||
else
|
||||
{
|
||||
newCameraPosition = Camera.transform.localPosition;
|
||||
newCameraPosition.y = m_OriginalCameraPosition.y - jumpAndLandingBob.Offset();
|
||||
}
|
||||
Camera.transform.localPosition = newCameraPosition;
|
||||
|
||||
if (!m_PreviouslyGrounded && rigidbodyFirstPersonController.Grounded)
|
||||
{
|
||||
StartCoroutine(jumpAndLandingBob.DoBobCycle());
|
||||
}
|
||||
|
||||
m_PreviouslyGrounded = rigidbodyFirstPersonController.Grounded;
|
||||
// m_CameraRefocus.SetFocusPoint();
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83c81407209f85e4c87c0cda8b32868e
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityStandardAssets.CrossPlatformInput;
|
||||
|
||||
namespace UnityStandardAssets.Characters.FirstPerson
|
||||
{
|
||||
[Serializable]
|
||||
public class MouseLook
|
||||
{
|
||||
public float XSensitivity = 2f;
|
||||
public float YSensitivity = 2f;
|
||||
public bool clampVerticalRotation = true;
|
||||
public float MinimumX = -90F;
|
||||
public float MaximumX = 90F;
|
||||
public bool smooth;
|
||||
public float smoothTime = 5f;
|
||||
public bool lockCursor = true;
|
||||
|
||||
|
||||
private Quaternion m_CharacterTargetRot;
|
||||
private Quaternion m_CameraTargetRot;
|
||||
private bool m_cursorIsLocked = true;
|
||||
|
||||
public void Init(Transform character, Transform camera)
|
||||
{
|
||||
m_CharacterTargetRot = character.localRotation;
|
||||
m_CameraTargetRot = camera.localRotation;
|
||||
}
|
||||
|
||||
|
||||
public void LookRotation(Transform character, Transform camera)
|
||||
{
|
||||
float yRot = CrossPlatformInputManager.GetAxis("Mouse X") * XSensitivity;
|
||||
float xRot = CrossPlatformInputManager.GetAxis("Mouse Y") * YSensitivity;
|
||||
|
||||
m_CharacterTargetRot *= Quaternion.Euler (0f, yRot, 0f);
|
||||
m_CameraTargetRot *= Quaternion.Euler (-xRot, 0f, 0f);
|
||||
|
||||
if(clampVerticalRotation)
|
||||
m_CameraTargetRot = ClampRotationAroundXAxis (m_CameraTargetRot);
|
||||
|
||||
if(smooth)
|
||||
{
|
||||
character.localRotation = Quaternion.Slerp (character.localRotation, m_CharacterTargetRot,
|
||||
smoothTime * Time.deltaTime);
|
||||
camera.localRotation = Quaternion.Slerp (camera.localRotation, m_CameraTargetRot,
|
||||
smoothTime * Time.deltaTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.localRotation = m_CharacterTargetRot;
|
||||
camera.localRotation = m_CameraTargetRot;
|
||||
}
|
||||
|
||||
UpdateCursorLock();
|
||||
}
|
||||
|
||||
public void SetCursorLock(bool value)
|
||||
{
|
||||
lockCursor = value;
|
||||
if(!lockCursor)
|
||||
{//we force unlock the cursor if the user disable the cursor locking helper
|
||||
Cursor.lockState = CursorLockMode.None;
|
||||
Cursor.visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateCursorLock()
|
||||
{
|
||||
//if the user set "lockCursor" we check & properly lock the cursos
|
||||
if (lockCursor)
|
||||
InternalLockUpdate();
|
||||
}
|
||||
|
||||
private void InternalLockUpdate()
|
||||
{
|
||||
if(Input.GetKeyUp(KeyCode.Escape))
|
||||
{
|
||||
m_cursorIsLocked = false;
|
||||
}
|
||||
else if(Input.GetMouseButtonUp(0))
|
||||
{
|
||||
m_cursorIsLocked = true;
|
||||
}
|
||||
|
||||
if (m_cursorIsLocked)
|
||||
{
|
||||
Cursor.lockState = CursorLockMode.Locked;
|
||||
Cursor.visible = false;
|
||||
}
|
||||
else if (!m_cursorIsLocked)
|
||||
{
|
||||
Cursor.lockState = CursorLockMode.None;
|
||||
Cursor.visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
Quaternion ClampRotationAroundXAxis(Quaternion q)
|
||||
{
|
||||
q.x /= q.w;
|
||||
q.y /= q.w;
|
||||
q.z /= q.w;
|
||||
q.w = 1.0f;
|
||||
|
||||
float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x);
|
||||
|
||||
angleX = Mathf.Clamp (angleX, MinimumX, MaximumX);
|
||||
|
||||
q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleX);
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 37e60a97f2c87ae41b6cdc1055d78cb9
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+265
@@ -0,0 +1,265 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityStandardAssets.CrossPlatformInput;
|
||||
|
||||
namespace UnityStandardAssets.Characters.FirstPerson
|
||||
{
|
||||
[RequireComponent(typeof (Rigidbody))]
|
||||
[RequireComponent(typeof (CapsuleCollider))]
|
||||
public class RigidbodyFirstPersonController : MonoBehaviour
|
||||
{
|
||||
[Serializable]
|
||||
public class MovementSettings
|
||||
{
|
||||
public float ForwardSpeed = 8.0f; // Speed when walking forward
|
||||
public float BackwardSpeed = 4.0f; // Speed when walking backwards
|
||||
public float StrafeSpeed = 4.0f; // Speed when walking sideways
|
||||
public float RunMultiplier = 2.0f; // Speed when sprinting
|
||||
public KeyCode RunKey = KeyCode.LeftShift;
|
||||
public float JumpForce = 30f;
|
||||
public AnimationCurve SlopeCurveModifier = new AnimationCurve(new Keyframe(-90.0f, 1.0f), new Keyframe(0.0f, 1.0f), new Keyframe(90.0f, 0.0f));
|
||||
[HideInInspector] public float CurrentTargetSpeed = 8f;
|
||||
|
||||
#if !MOBILE_INPUT
|
||||
private bool m_Running;
|
||||
#endif
|
||||
|
||||
public void UpdateDesiredTargetSpeed(Vector2 input)
|
||||
{
|
||||
if (input == Vector2.zero) return;
|
||||
if (input.x > 0 || input.x < 0)
|
||||
{
|
||||
//strafe
|
||||
CurrentTargetSpeed = StrafeSpeed;
|
||||
}
|
||||
if (input.y < 0)
|
||||
{
|
||||
//backwards
|
||||
CurrentTargetSpeed = BackwardSpeed;
|
||||
}
|
||||
if (input.y > 0)
|
||||
{
|
||||
//forwards
|
||||
//handled last as if strafing and moving forward at the same time forwards speed should take precedence
|
||||
CurrentTargetSpeed = ForwardSpeed;
|
||||
}
|
||||
#if !MOBILE_INPUT
|
||||
if (Input.GetKey(RunKey))
|
||||
{
|
||||
CurrentTargetSpeed *= RunMultiplier;
|
||||
m_Running = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Running = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !MOBILE_INPUT
|
||||
public bool Running
|
||||
{
|
||||
get { return m_Running; }
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class AdvancedSettings
|
||||
{
|
||||
public float groundCheckDistance = 0.01f; // distance for checking if the controller is grounded ( 0.01f seems to work best for this )
|
||||
public float stickToGroundHelperDistance = 0.5f; // stops the character
|
||||
public float slowDownRate = 20f; // rate at which the controller comes to a stop when there is no input
|
||||
public bool airControl; // can the user control the direction that is being moved in the air
|
||||
[Tooltip("set it to 0.1 or more if you get stuck in wall")]
|
||||
public float shellOffset; //reduce the radius by that ratio to avoid getting stuck in wall (a value of 0.1f is nice)
|
||||
}
|
||||
|
||||
|
||||
public Camera cam;
|
||||
public MovementSettings movementSettings = new MovementSettings();
|
||||
public MouseLook mouseLook = new MouseLook();
|
||||
public AdvancedSettings advancedSettings = new AdvancedSettings();
|
||||
|
||||
|
||||
private Rigidbody m_RigidBody;
|
||||
private CapsuleCollider m_Capsule;
|
||||
private float m_YRotation;
|
||||
private Vector3 m_GroundContactNormal;
|
||||
private bool m_Jump, m_PreviouslyGrounded, m_Jumping, m_IsGrounded;
|
||||
|
||||
|
||||
public Vector3 Velocity
|
||||
{
|
||||
get { return m_RigidBody.velocity; }
|
||||
}
|
||||
|
||||
public bool Grounded
|
||||
{
|
||||
get { return m_IsGrounded; }
|
||||
}
|
||||
|
||||
public bool Jumping
|
||||
{
|
||||
get { return m_Jumping; }
|
||||
}
|
||||
|
||||
public bool Running
|
||||
{
|
||||
get
|
||||
{
|
||||
#if !MOBILE_INPUT
|
||||
return movementSettings.Running;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
m_RigidBody = GetComponent<Rigidbody>();
|
||||
m_Capsule = GetComponent<CapsuleCollider>();
|
||||
mouseLook.Init (transform, cam.transform);
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
RotateView();
|
||||
|
||||
if (CrossPlatformInputManager.GetButtonDown("Jump") && !m_Jump)
|
||||
{
|
||||
m_Jump = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
GroundCheck();
|
||||
Vector2 input = GetInput();
|
||||
|
||||
if ((Mathf.Abs(input.x) > float.Epsilon || Mathf.Abs(input.y) > float.Epsilon) && (advancedSettings.airControl || m_IsGrounded))
|
||||
{
|
||||
// always move along the camera forward as it is the direction that it being aimed at
|
||||
Vector3 desiredMove = cam.transform.forward*input.y + cam.transform.right*input.x;
|
||||
desiredMove = Vector3.ProjectOnPlane(desiredMove, m_GroundContactNormal).normalized;
|
||||
|
||||
desiredMove.x = desiredMove.x*movementSettings.CurrentTargetSpeed;
|
||||
desiredMove.z = desiredMove.z*movementSettings.CurrentTargetSpeed;
|
||||
desiredMove.y = desiredMove.y*movementSettings.CurrentTargetSpeed;
|
||||
if (m_RigidBody.velocity.sqrMagnitude <
|
||||
(movementSettings.CurrentTargetSpeed*movementSettings.CurrentTargetSpeed))
|
||||
{
|
||||
m_RigidBody.AddForce(desiredMove*SlopeMultiplier(), ForceMode.Impulse);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_IsGrounded)
|
||||
{
|
||||
m_RigidBody.drag = 5f;
|
||||
|
||||
if (m_Jump)
|
||||
{
|
||||
m_RigidBody.drag = 0f;
|
||||
m_RigidBody.velocity = new Vector3(m_RigidBody.velocity.x, 0f, m_RigidBody.velocity.z);
|
||||
m_RigidBody.AddForce(new Vector3(0f, movementSettings.JumpForce, 0f), ForceMode.Impulse);
|
||||
m_Jumping = true;
|
||||
}
|
||||
|
||||
if (!m_Jumping && Mathf.Abs(input.x) < float.Epsilon && Mathf.Abs(input.y) < float.Epsilon && m_RigidBody.velocity.magnitude < 1f)
|
||||
{
|
||||
m_RigidBody.Sleep();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_RigidBody.drag = 0f;
|
||||
if (m_PreviouslyGrounded && !m_Jumping)
|
||||
{
|
||||
StickToGroundHelper();
|
||||
}
|
||||
}
|
||||
m_Jump = false;
|
||||
}
|
||||
|
||||
|
||||
private float SlopeMultiplier()
|
||||
{
|
||||
float angle = Vector3.Angle(m_GroundContactNormal, Vector3.up);
|
||||
return movementSettings.SlopeCurveModifier.Evaluate(angle);
|
||||
}
|
||||
|
||||
|
||||
private void StickToGroundHelper()
|
||||
{
|
||||
RaycastHit hitInfo;
|
||||
if (Physics.SphereCast(transform.position, m_Capsule.radius * (1.0f - advancedSettings.shellOffset), Vector3.down, out hitInfo,
|
||||
((m_Capsule.height/2f) - m_Capsule.radius) +
|
||||
advancedSettings.stickToGroundHelperDistance, Physics.AllLayers, QueryTriggerInteraction.Ignore))
|
||||
{
|
||||
if (Mathf.Abs(Vector3.Angle(hitInfo.normal, Vector3.up)) < 85f)
|
||||
{
|
||||
m_RigidBody.velocity = Vector3.ProjectOnPlane(m_RigidBody.velocity, hitInfo.normal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Vector2 GetInput()
|
||||
{
|
||||
|
||||
Vector2 input = new Vector2
|
||||
{
|
||||
x = CrossPlatformInputManager.GetAxis("Horizontal"),
|
||||
y = CrossPlatformInputManager.GetAxis("Vertical")
|
||||
};
|
||||
movementSettings.UpdateDesiredTargetSpeed(input);
|
||||
return input;
|
||||
}
|
||||
|
||||
|
||||
private void RotateView()
|
||||
{
|
||||
//avoids the mouse looking if the game is effectively paused
|
||||
if (Mathf.Abs(Time.timeScale) < float.Epsilon) return;
|
||||
|
||||
// get the rotation before it's changed
|
||||
float oldYRotation = transform.eulerAngles.y;
|
||||
|
||||
mouseLook.LookRotation (transform, cam.transform);
|
||||
|
||||
if (m_IsGrounded || advancedSettings.airControl)
|
||||
{
|
||||
// Rotate the rigidbody velocity to match the new direction that the character is looking
|
||||
Quaternion velRotation = Quaternion.AngleAxis(transform.eulerAngles.y - oldYRotation, Vector3.up);
|
||||
m_RigidBody.velocity = velRotation*m_RigidBody.velocity;
|
||||
}
|
||||
}
|
||||
|
||||
/// sphere cast down just beyond the bottom of the capsule to see if the capsule is colliding round the bottom
|
||||
private void GroundCheck()
|
||||
{
|
||||
m_PreviouslyGrounded = m_IsGrounded;
|
||||
RaycastHit hitInfo;
|
||||
if (Physics.SphereCast(transform.position, m_Capsule.radius * (1.0f - advancedSettings.shellOffset), Vector3.down, out hitInfo,
|
||||
((m_Capsule.height/2f) - m_Capsule.radius) + advancedSettings.groundCheckDistance, Physics.AllLayers, QueryTriggerInteraction.Ignore))
|
||||
{
|
||||
m_IsGrounded = true;
|
||||
m_GroundContactNormal = hitInfo.normal;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_IsGrounded = false;
|
||||
m_GroundContactNormal = Vector3.up;
|
||||
}
|
||||
if (!m_PreviouslyGrounded && m_IsGrounded && m_Jumping)
|
||||
{
|
||||
m_Jumping = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 81c9795a96c094f4cbde4d65546aa9b2
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8912f13e18e67bc478684ec30d73bc64
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb0e763ded53048dd80e7b78c35ded56
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+1147
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1379
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+2385
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1838
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1646
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1534
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1469
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1404
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1610
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1382
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1400
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
+1400
File diff suppressed because it is too large.
Load diff
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29486a9cd1773f44f80570b5bd896a1d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+806
@@ -0,0 +1,806 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: ThirdPersonAnimatorController
|
||||
serializedVersion: 4
|
||||
m_AnimatorParameters:
|
||||
- m_Name: Forward
|
||||
m_Type: 1
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Turn
|
||||
m_Type: 1
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Crouch
|
||||
m_Type: 4
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: OnGround
|
||||
m_Type: 4
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 1
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Jump
|
||||
m_Type: 1
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: JumpLeg
|
||||
m_Type: 1
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
m_StateMachine: {fileID: 110700000}
|
||||
m_Mask: {fileID: 0}
|
||||
m_Motions: []
|
||||
m_Behaviours: []
|
||||
m_BlendingMode: 0
|
||||
m_SyncedLayerIndex: -1
|
||||
m_DefaultWeight: 0
|
||||
m_IKPass: 1
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!206 &20600000
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400000, guid: dffa50cfe77e0434bbfa71245b3dd529, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3}
|
||||
m_Threshold: .095238097
|
||||
m_Position: {x: .5, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400006, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3}
|
||||
m_Threshold: .190476194
|
||||
m_Position: {x: 1, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400010, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3}
|
||||
m_Threshold: .285714298
|
||||
m_Position: {x: -.5, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400014, guid: 6fb3851da6a6f5948ab6892bee8ba920, type: 3}
|
||||
m_Threshold: .380952388
|
||||
m_Position: {x: -1, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: b1a5e04ae51004842aba06704a6c2903, type: 3}
|
||||
m_Threshold: .428571433
|
||||
m_Position: {x: 0, y: .5}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400002, guid: bb141fc9a700c9c4ca7e6dadb8acf24b, type: 3}
|
||||
m_Threshold: .476190478
|
||||
m_Position: {x: 1, y: .5}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 1c52c953c83c2254a9fa72d50250f028, type: 3}
|
||||
m_Threshold: .523809552
|
||||
m_Position: {x: .5, y: .5}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: bb141fc9a700c9c4ca7e6dadb8acf24b, type: 3}
|
||||
m_Threshold: .619047642
|
||||
m_Position: {x: -1, y: .5}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400002, guid: 1c52c953c83c2254a9fa72d50250f028, type: 3}
|
||||
m_Threshold: .666666687
|
||||
m_Position: {x: -.5, y: .5}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 1cb8ed3cbba15f0479fbae54e0a963df, type: 3}
|
||||
m_Threshold: .761904776
|
||||
m_Position: {x: 0, y: 1}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: f2bed5dc5afacff44a00de8daae9703b, type: 3}
|
||||
m_Threshold: .809523821
|
||||
m_Position: {x: 1, y: 1}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400002, guid: f2bed5dc5afacff44a00de8daae9703b, type: 3}
|
||||
m_Threshold: .857142866
|
||||
m_Position: {x: -1, y: 1}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 1062212255550964e974f3ffb3cbaae3, type: 3}
|
||||
m_Threshold: .90476191
|
||||
m_Position: {x: .5, y: 1}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400002, guid: 1062212255550964e974f3ffb3cbaae3, type: 3}
|
||||
m_Threshold: .952380955
|
||||
m_Position: {x: -.5, y: 1}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Forward
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: .952380955
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 3
|
||||
--- !u!206 &20600002
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Idle
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400010, guid: 4ee731d726c3dd34eb36806ea0d8fe98, type: 3}
|
||||
m_Threshold: -1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400014, guid: e38eb300eb4745b4db509a224a99bbe1, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 4ee731d726c3dd34eb36806ea0d8fe98, type: 3}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: -1
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!206 &20600004
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Walk
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400002, guid: 6da89662649b53c49b06616f51157b48, type: 3}
|
||||
m_Threshold: -1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 24c848a6dbf95e848950ca5403a1191e, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 6da89662649b53c49b06616f51157b48, type: 3}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: -1
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!206 &20600006
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Run
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400026, guid: ccb909e390d7be24e9107d33119a0eaa, type: 3}
|
||||
m_Threshold: -1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400024, guid: ccb909e390d7be24e9107d33119a0eaa, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400022, guid: ccb909e390d7be24e9107d33119a0eaa, type: 3}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: -1
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!206 &20608386
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Idle
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400002, guid: 98e8896e12d39bb41a5a74e9ae897a64, type: 3}
|
||||
m_Threshold: -1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 11cd8118786c19d49a6bf4fc939ad434, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 98e8896e12d39bb41a5a74e9ae897a64, type: 3}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: -1
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!206 &20610505
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400002, guid: d89ea37480b6d75458aa38843e9688dc, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: d89ea37480b6d75458aa38843e9688dc, type: 3}
|
||||
m_Threshold: .198412701
|
||||
m_Position: {x: 0, y: 1}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400008, guid: d89ea37480b6d75458aa38843e9688dc, type: 3}
|
||||
m_Threshold: .396825403
|
||||
m_Position: {x: -1, y: 1}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400014, guid: d89ea37480b6d75458aa38843e9688dc, type: 3}
|
||||
m_Threshold: .59523809
|
||||
m_Position: {x: 1, y: 1}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Forward
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: .59523809
|
||||
m_UseAutomaticThresholds: 1
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 3
|
||||
--- !u!206 &20610787
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400002, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: -1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3}
|
||||
m_Threshold: 5
|
||||
m_Position: {x: 5, y: -1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3}
|
||||
m_Threshold: 15
|
||||
m_Position: {x: 5, y: 1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3}
|
||||
m_Threshold: 20
|
||||
m_Position: {x: -5, y: 0}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3}
|
||||
m_Threshold: 25
|
||||
m_Position: {x: 0, y: 1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400006, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3}
|
||||
m_Threshold: 35
|
||||
m_Position: {x: 5, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400008, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3}
|
||||
m_Threshold: 40
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Jump
|
||||
m_BlendParameterY: JumpLeg
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: 40
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 3
|
||||
--- !u!206 &20621344
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400002, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: -1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3}
|
||||
m_Threshold: 5
|
||||
m_Position: {x: 5, y: -1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 51dd2e4c869794f75a0df7d54b210214, type: 3}
|
||||
m_Threshold: 15
|
||||
m_Position: {x: 5, y: 1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3}
|
||||
m_Threshold: 20
|
||||
m_Position: {x: -9, y: 0}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400004, guid: f03e10c73f30b4ab4aa8ea8f1cc16d36, type: 3}
|
||||
m_Threshold: 25
|
||||
m_Position: {x: 0, y: 1}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400006, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3}
|
||||
m_Threshold: 35
|
||||
m_Position: {x: 5, y: 0}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400008, guid: 0d9d26e2162aa4d11ab075b34c029673, type: 3}
|
||||
m_Threshold: 40
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: .100000001
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Jump
|
||||
m_BlendParameterY: JumpLeg
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: 40
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 3
|
||||
--- !u!206 &20631403
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Walk
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 7400002, guid: 1da5f9c54c49bfc488819dd2df8bb228, type: 3}
|
||||
m_Threshold: -1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: c869773dc0bdfe042a8293344c186eaf, type: 3}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 7400000, guid: 1da5f9c54c49bfc488819dd2df8bb228, type: 3}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 2
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Turn
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: -1
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!206 &20659883
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs:
|
||||
- m_Motion: {fileID: 20608386}
|
||||
m_Threshold: 0
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
- m_Motion: {fileID: 20631403}
|
||||
m_Threshold: 1
|
||||
m_Position: {x: 0, y: 0}
|
||||
m_TimeScale: 1
|
||||
m_CycleOffset: 0
|
||||
m_DirectBlendEvent:
|
||||
m_Mirror: 0
|
||||
m_BlendParameter: Forward
|
||||
m_BlendParameterY: Blend
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 1
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!206 &20683409
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Blend Tree
|
||||
m_Childs: []
|
||||
m_BlendParameter: Forward
|
||||
m_BlendParameterY: Forward
|
||||
m_MinThreshold: 0
|
||||
m_MaxThreshold: 1
|
||||
m_UseAutomaticThresholds: 1
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!1101 &110100000
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Crouch
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110200000}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .0801232457
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 0
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &110100036
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 2
|
||||
m_ConditionEvent: Crouch
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110298501}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .111009784
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 0
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &110123257
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: OnGround
|
||||
m_EventTreshold: 0
|
||||
- m_ConditionMode: 3
|
||||
m_ConditionEvent: Jump
|
||||
m_EventTreshold: -2
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110298501}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .117741838
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 0
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &110135218
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 2
|
||||
m_ConditionEvent: OnGround
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110276412}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .10203097
|
||||
m_TransitionOffset: .0180516355
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 0
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &110161005
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 2
|
||||
m_ConditionEvent: OnGround
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110276412}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .0246594138
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 0
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &110167223
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 2
|
||||
m_ConditionEvent: Crouch
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110298501}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .101033315
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &110172777
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: OnGround
|
||||
m_EventTreshold: 0
|
||||
- m_ConditionMode: 4
|
||||
m_ConditionEvent: Jump
|
||||
m_EventTreshold: -2
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 110200000}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: .182058424
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: .899999976
|
||||
m_HasExitTime: 0
|
||||
m_Atomic: 0
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &110200000
|
||||
AnimatorState:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Crouching
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 110100036}
|
||||
- {fileID: 110161005}
|
||||
m_Behaviours: []
|
||||
m_Position: {x: 444, y: 240, z: 0}
|
||||
m_IKOnFeet: 1
|
||||
m_Mirror: 0
|
||||
m_Motion: {fileID: 20610505}
|
||||
m_Tag:
|
||||
--- !u!1102 &110276412
|
||||
AnimatorState:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Airborne
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 110172777}
|
||||
- {fileID: 110123257}
|
||||
m_Behaviours: []
|
||||
m_Position: {x: 444, y: -48, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_Mirror: 0
|
||||
m_Motion: {fileID: 20621344}
|
||||
m_Tag:
|
||||
--- !u!1102 &110298501
|
||||
AnimatorState:
|
||||
serializedVersion: 3
|
||||
m_ObjectHideFlags: 3
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Grounded
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 110100000}
|
||||
- {fileID: 110135218}
|
||||
m_Behaviours: []
|
||||
m_Position: {x: 588, y: 96, z: 0}
|
||||
m_IKOnFeet: 1
|
||||
m_Mirror: 0
|
||||
m_Motion: {fileID: 20600000}
|
||||
m_Tag:
|
||||
--- !u!1107 &110700000
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 4
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_Name: Base Layer
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 110298501}
|
||||
m_Position: {x: 588, y: 96, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 110200000}
|
||||
m_Position: {x: 444, y: 240, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 110276412}
|
||||
m_Position: {x: 444, y: -48, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions:
|
||||
data:
|
||||
first: {fileID: 110700000}
|
||||
second: []
|
||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||
m_EntryPosition: {x: 36, y: 108, z: 0}
|
||||
m_ExitPosition: {x: 792, y: 96, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 110298501}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e2cf68ff4b1ffda45a77f7307dd789b9
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f93df448921b46c45999c77f43856ba2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: EthanGrey
|
||||
m_Shader: {fileID: 4800000, guid: 676d51a93fad6434bb7ee1f64ad89551, type: 3}
|
||||
m_ShaderKeywords: _ALPHATEST_OFF
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 2000
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: 3b5b7be0f2332c24f89a2af018daa62d, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer0:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer0Normal:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer1Normal:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_WorldMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _ALPHATEST: 0
|
||||
- _AOPower: 1
|
||||
- _AOPowerExp: 1
|
||||
- _AOVertexMask: 1
|
||||
- _AlphaTest: 0
|
||||
- _BumpMapScale: 1
|
||||
- _CullMode: 2
|
||||
- _Cutoff: 0.5
|
||||
- _Glossiness: 0.3
|
||||
- _Metallic: 0
|
||||
- _PW_CoverLayer0AlphaClamp: 1
|
||||
- _PW_CoverLayer0Edge: 0.1
|
||||
- _PW_CoverLayer0FadeDist: 0
|
||||
- _PW_CoverLayer0FadeStart: 0
|
||||
- _PW_CoverLayer0Metallic: 0.2
|
||||
- _PW_CoverLayer0NormalScale: 1
|
||||
- _PW_CoverLayer0Progress: 0
|
||||
- _PW_CoverLayer0Smoothness: 0.75
|
||||
- _PW_CoverLayer0Tiling: 64
|
||||
- _PW_CoverLayer0Wrap: 0
|
||||
- _PW_CoverLayer1AlphaClamp: 1
|
||||
- _PW_CoverLayer1Edge: 0.1
|
||||
- _PW_CoverLayer1FadeDist: 0
|
||||
- _PW_CoverLayer1FadeStart: 0
|
||||
- _PW_CoverLayer1Metallic: 0.2
|
||||
- _PW_CoverLayer1NormalScale: 1
|
||||
- _PW_CoverLayer1Progress: 0
|
||||
- _PW_CoverLayer1Smoothness: 0.75
|
||||
- _PW_CoverLayer1Tiling: 64
|
||||
- _PW_CoverLayer1Wrap: 0
|
||||
- _PW_GlobalControl: 1
|
||||
- _PW_Global_SeasonalTintAmount: 0
|
||||
- _PW_SF_BILLBOARD: 0
|
||||
- _PW_SF_COVER: 0
|
||||
- _PW_SF_SSS: 0
|
||||
- _PW_SF_WIND: 0
|
||||
- _PW_SF_WORLDMAP: 0
|
||||
- _PW_SSSDistortion: 0.5
|
||||
- _PW_SSSPower: 1
|
||||
- _PW_ShaderID: 2
|
||||
- _PW_ShaderMode: 0
|
||||
- _PW_TerrainSizeX: 2048
|
||||
- _PW_TerrainSizeZ: 2048
|
||||
- _PW_WorldMapUVScale: 1
|
||||
- _WrapLighting: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 0.6102941, g: 0.6102941, b: 0.6102941, a: 1}
|
||||
- _PW_CoverLayer0Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_CoverLayer1Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_SSSTint: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_WindTreeFlex: {r: 0.8, g: 1.15, b: 0.1, a: 0}
|
||||
- _PW_WindTreeFrequency: {r: 0.25, g: 0.5, b: 1.3, a: 0}
|
||||
- _PW_WindTreeWidthHeight: {r: 4, g: 8, b: 0, a: 0}
|
||||
- _PW_WorldMapColorCover0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_WorldMapColorCover1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_WorldMapColorObject: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
version: 1
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 621e901dcf5ebaf46bce29d18f67194c
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-2267986996032650447
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
version: 1
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: EthanWhite
|
||||
m_Shader: {fileID: 4800000, guid: 676d51a93fad6434bb7ee1f64ad89551, type: 3}
|
||||
m_ShaderKeywords: _ALPHATEST_OFF
|
||||
m_LightmapFlags: 0
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: 3b5b7be0f2332c24f89a2af018daa62d, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer0:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer0Normal:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_CoverLayer1Normal:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _PW_WorldMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _ALPHATEST: 0
|
||||
- _AOPower: 1
|
||||
- _AOPowerExp: 1
|
||||
- _AOVertexMask: 1
|
||||
- _AlphaTest: 0
|
||||
- _BumpMapScale: 1
|
||||
- _CullMode: 2
|
||||
- _Cutoff: 0.5
|
||||
- _Glossiness: 0.15
|
||||
- _Metallic: 0
|
||||
- _PW_CoverLayer0AlphaClamp: 1
|
||||
- _PW_CoverLayer0Edge: 0.1
|
||||
- _PW_CoverLayer0FadeDist: 0
|
||||
- _PW_CoverLayer0FadeStart: 0
|
||||
- _PW_CoverLayer0Metallic: 0.2
|
||||
- _PW_CoverLayer0NormalScale: 1
|
||||
- _PW_CoverLayer0Progress: 0
|
||||
- _PW_CoverLayer0Smoothness: 0.75
|
||||
- _PW_CoverLayer0Tiling: 64
|
||||
- _PW_CoverLayer0Wrap: 0
|
||||
- _PW_CoverLayer1AlphaClamp: 1
|
||||
- _PW_CoverLayer1Edge: 0.1
|
||||
- _PW_CoverLayer1FadeDist: 0
|
||||
- _PW_CoverLayer1FadeStart: 0
|
||||
- _PW_CoverLayer1Metallic: 0.2
|
||||
- _PW_CoverLayer1NormalScale: 1
|
||||
- _PW_CoverLayer1Progress: 0
|
||||
- _PW_CoverLayer1Smoothness: 0.75
|
||||
- _PW_CoverLayer1Tiling: 64
|
||||
- _PW_CoverLayer1Wrap: 0
|
||||
- _PW_GlobalControl: 1
|
||||
- _PW_Global_SeasonalTintAmount: 0
|
||||
- _PW_SF_BILLBOARD: 0
|
||||
- _PW_SF_COVER: 0
|
||||
- _PW_SF_SSS: 0
|
||||
- _PW_SF_WIND: 0
|
||||
- _PW_SF_WORLDMAP: 0
|
||||
- _PW_SSSDistortion: 0.5
|
||||
- _PW_SSSPower: 1
|
||||
- _PW_ShaderID: 2
|
||||
- _PW_ShaderMode: 0
|
||||
- _PW_TerrainSizeX: 2048
|
||||
- _PW_TerrainSizeZ: 2048
|
||||
- _PW_WorldMapUVScale: 1
|
||||
- _WrapLighting: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_CoverLayer0Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_CoverLayer1Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_SSSTint: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_WindTreeFlex: {r: 0.8, g: 1.15, b: 0.1, a: 0}
|
||||
- _PW_WindTreeFrequency: {r: 0.25, g: 0.5, b: 1.3, a: 0}
|
||||
- _PW_WindTreeWidthHeight: {r: 4, g: 8, b: 0, a: 0}
|
||||
- _PW_WorldMapColorCover0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_WorldMapColorCover1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _PW_WorldMapColorObject: {r: 1, g: 1, b: 1, a: 1}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f62b52b2d4b721742a0bc5c6b4db468d
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aef224e1951a8274684081643c7fa672
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+2001
File diff suppressed because it is too large.
Load diff
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e09f07f9be24b2d4180a74a671348b5b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+2620
File diff suppressed because it is too large.
Load diff
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 54eb5844754051b40a918a84c33b7c1a
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+2877
File diff suppressed because it is too large.
Load diff
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7737647c22c1fc64a88d5cd030c352ce
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ee9c33ffee000840b0fed14ec400bc9
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UnityStandardAssets.Characters.ThirdPerson
|
||||
{
|
||||
[RequireComponent(typeof (UnityEngine.AI.NavMeshAgent))]
|
||||
[RequireComponent(typeof (ThirdPersonCharacter))]
|
||||
public class AICharacterControl : MonoBehaviour
|
||||
{
|
||||
public UnityEngine.AI.NavMeshAgent agent { get; private set; } // the navmesh agent required for the path finding
|
||||
public ThirdPersonCharacter character { get; private set; } // the character we are controlling
|
||||
public Transform target; // target to aim for
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// get the components on the object we need ( should not be null due to require component so no need to check )
|
||||
agent = GetComponentInChildren<UnityEngine.AI.NavMeshAgent>();
|
||||
character = GetComponent<ThirdPersonCharacter>();
|
||||
|
||||
agent.updateRotation = false;
|
||||
agent.updatePosition = true;
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (target != null)
|
||||
agent.SetDestination(target.position);
|
||||
|
||||
if (agent.remainingDistance > agent.stoppingDistance)
|
||||
character.Move(agent.desiredVelocity, false, false);
|
||||
else
|
||||
character.Move(Vector3.zero, false, false);
|
||||
}
|
||||
|
||||
|
||||
public void SetTarget(Transform target)
|
||||
{
|
||||
this.target = target;
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8c5335f0882fe4d478883cc8c58ce906
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace UnityStandardAssets.Characters.ThirdPerson
|
||||
{
|
||||
[RequireComponent(typeof(Rigidbody))]
|
||||
[RequireComponent(typeof(CapsuleCollider))]
|
||||
[RequireComponent(typeof(Animator))]
|
||||
public class ThirdPersonCharacter : MonoBehaviour
|
||||
{
|
||||
[SerializeField] float m_MovingTurnSpeed = 360;
|
||||
[SerializeField] float m_StationaryTurnSpeed = 180;
|
||||
[SerializeField] float m_JumpPower = 12f;
|
||||
[Range(1f, 4f)][SerializeField] float m_GravityMultiplier = 2f;
|
||||
[SerializeField] float m_RunCycleLegOffset = 0.2f; //specific to the character in sample assets, will need to be modified to work with others
|
||||
[SerializeField] float m_MoveSpeedMultiplier = 1f;
|
||||
[SerializeField] float m_AnimSpeedMultiplier = 1f;
|
||||
[SerializeField] float m_GroundCheckDistance = 0.1f;
|
||||
|
||||
Rigidbody m_Rigidbody;
|
||||
Animator m_Animator;
|
||||
bool m_IsGrounded;
|
||||
float m_OrigGroundCheckDistance;
|
||||
const float k_Half = 0.5f;
|
||||
float m_TurnAmount;
|
||||
float m_ForwardAmount;
|
||||
Vector3 m_GroundNormal;
|
||||
float m_CapsuleHeight;
|
||||
Vector3 m_CapsuleCenter;
|
||||
CapsuleCollider m_Capsule;
|
||||
bool m_Crouching;
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
m_Animator = GetComponent<Animator>();
|
||||
m_Rigidbody = GetComponent<Rigidbody>();
|
||||
m_Capsule = GetComponent<CapsuleCollider>();
|
||||
m_CapsuleHeight = m_Capsule.height;
|
||||
m_CapsuleCenter = m_Capsule.center;
|
||||
|
||||
m_Rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
|
||||
m_OrigGroundCheckDistance = m_GroundCheckDistance;
|
||||
}
|
||||
|
||||
|
||||
public void Move(Vector3 move, bool crouch, bool jump)
|
||||
{
|
||||
|
||||
// convert the world relative moveInput vector into a local-relative
|
||||
// turn amount and forward amount required to head in the desired
|
||||
// direction.
|
||||
if (move.magnitude > 1f) move.Normalize();
|
||||
move = transform.InverseTransformDirection(move);
|
||||
CheckGroundStatus();
|
||||
move = Vector3.ProjectOnPlane(move, m_GroundNormal);
|
||||
m_TurnAmount = Mathf.Atan2(move.x, move.z);
|
||||
m_ForwardAmount = move.z;
|
||||
|
||||
ApplyExtraTurnRotation();
|
||||
|
||||
// control and velocity handling is different when grounded and airborne:
|
||||
if (m_IsGrounded)
|
||||
{
|
||||
HandleGroundedMovement(crouch, jump);
|
||||
}
|
||||
else
|
||||
{
|
||||
HandleAirborneMovement();
|
||||
}
|
||||
|
||||
ScaleCapsuleForCrouching(crouch);
|
||||
PreventStandingInLowHeadroom();
|
||||
|
||||
// send input and other state parameters to the animator
|
||||
UpdateAnimator(move);
|
||||
}
|
||||
|
||||
|
||||
void ScaleCapsuleForCrouching(bool crouch)
|
||||
{
|
||||
if (m_IsGrounded && crouch)
|
||||
{
|
||||
if (m_Crouching) return;
|
||||
m_Capsule.height = m_Capsule.height / 2f;
|
||||
m_Capsule.center = m_Capsule.center / 2f;
|
||||
m_Crouching = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Ray crouchRay = new Ray(m_Rigidbody.position + Vector3.up * m_Capsule.radius * k_Half, Vector3.up);
|
||||
float crouchRayLength = m_CapsuleHeight - m_Capsule.radius * k_Half;
|
||||
if (Physics.SphereCast(crouchRay, m_Capsule.radius * k_Half, crouchRayLength, Physics.AllLayers, QueryTriggerInteraction.Ignore))
|
||||
{
|
||||
m_Crouching = true;
|
||||
return;
|
||||
}
|
||||
m_Capsule.height = m_CapsuleHeight;
|
||||
m_Capsule.center = m_CapsuleCenter;
|
||||
m_Crouching = false;
|
||||
}
|
||||
}
|
||||
|
||||
void PreventStandingInLowHeadroom()
|
||||
{
|
||||
// prevent standing up in crouch-only zones
|
||||
if (!m_Crouching)
|
||||
{
|
||||
Ray crouchRay = new Ray(m_Rigidbody.position + Vector3.up * m_Capsule.radius * k_Half, Vector3.up);
|
||||
float crouchRayLength = m_CapsuleHeight - m_Capsule.radius * k_Half;
|
||||
if (Physics.SphereCast(crouchRay, m_Capsule.radius * k_Half, crouchRayLength, Physics.AllLayers, QueryTriggerInteraction.Ignore))
|
||||
{
|
||||
m_Crouching = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void UpdateAnimator(Vector3 move)
|
||||
{
|
||||
// update the animator parameters
|
||||
m_Animator.SetFloat("Forward", m_ForwardAmount, 0.1f, Time.deltaTime);
|
||||
m_Animator.SetFloat("Turn", m_TurnAmount, 0.1f, Time.deltaTime);
|
||||
m_Animator.SetBool("Crouch", m_Crouching);
|
||||
m_Animator.SetBool("OnGround", m_IsGrounded);
|
||||
if (!m_IsGrounded)
|
||||
{
|
||||
m_Animator.SetFloat("Jump", m_Rigidbody.velocity.y);
|
||||
}
|
||||
|
||||
// calculate which leg is behind, so as to leave that leg trailing in the jump animation
|
||||
// (This code is reliant on the specific run cycle offset in our animations,
|
||||
// and assumes one leg passes the other at the normalized clip times of 0.0 and 0.5)
|
||||
float runCycle =
|
||||
Mathf.Repeat(
|
||||
m_Animator.GetCurrentAnimatorStateInfo(0).normalizedTime + m_RunCycleLegOffset, 1);
|
||||
float jumpLeg = (runCycle < k_Half ? 1 : -1) * m_ForwardAmount;
|
||||
if (m_IsGrounded)
|
||||
{
|
||||
m_Animator.SetFloat("JumpLeg", jumpLeg);
|
||||
}
|
||||
|
||||
// the anim speed multiplier allows the overall speed of walking/running to be tweaked in the inspector,
|
||||
// which affects the movement speed because of the root motion.
|
||||
if (m_IsGrounded && move.magnitude > 0)
|
||||
{
|
||||
m_Animator.speed = m_AnimSpeedMultiplier;
|
||||
}
|
||||
else
|
||||
{
|
||||
// don't use that while airborne
|
||||
m_Animator.speed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void HandleAirborneMovement()
|
||||
{
|
||||
// apply extra gravity from multiplier:
|
||||
Vector3 extraGravityForce = (Physics.gravity * m_GravityMultiplier) - Physics.gravity;
|
||||
m_Rigidbody.AddForce(extraGravityForce);
|
||||
|
||||
m_GroundCheckDistance = m_Rigidbody.velocity.y < 0 ? m_OrigGroundCheckDistance : 0.01f;
|
||||
}
|
||||
|
||||
|
||||
void HandleGroundedMovement(bool crouch, bool jump)
|
||||
{
|
||||
// check whether conditions are right to allow a jump:
|
||||
if (jump && !crouch && m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Grounded"))
|
||||
{
|
||||
// jump!
|
||||
m_Rigidbody.velocity = new Vector3(m_Rigidbody.velocity.x, m_JumpPower, m_Rigidbody.velocity.z);
|
||||
m_IsGrounded = false;
|
||||
m_Animator.applyRootMotion = false;
|
||||
m_GroundCheckDistance = 0.1f;
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyExtraTurnRotation()
|
||||
{
|
||||
// help the character turn faster (this is in addition to root rotation in the animation)
|
||||
float turnSpeed = Mathf.Lerp(m_StationaryTurnSpeed, m_MovingTurnSpeed, m_ForwardAmount);
|
||||
transform.Rotate(0, m_TurnAmount * turnSpeed * Time.deltaTime, 0);
|
||||
}
|
||||
|
||||
|
||||
public void OnAnimatorMove()
|
||||
{
|
||||
// we implement this function to override the default root motion.
|
||||
// this allows us to modify the positional speed before it's applied.
|
||||
if (m_IsGrounded && Time.deltaTime > 0)
|
||||
{
|
||||
Vector3 v = (m_Animator.deltaPosition * m_MoveSpeedMultiplier) / Time.deltaTime;
|
||||
|
||||
// we preserve the existing y part of the current velocity.
|
||||
v.y = m_Rigidbody.velocity.y;
|
||||
m_Rigidbody.velocity = v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CheckGroundStatus()
|
||||
{
|
||||
RaycastHit hitInfo;
|
||||
#if UNITY_EDITOR
|
||||
// helper to visualise the ground check ray in the scene view
|
||||
Debug.DrawLine(transform.position + (Vector3.up * 0.1f), transform.position + (Vector3.up * 0.1f) + (Vector3.down * m_GroundCheckDistance));
|
||||
#endif
|
||||
// 0.1f is a small offset to start the ray from inside the character
|
||||
// it is also good to note that the transform position in the sample assets is at the base of the character
|
||||
if (Physics.Raycast(transform.position + (Vector3.up * 0.1f), Vector3.down, out hitInfo, m_GroundCheckDistance))
|
||||
{
|
||||
m_GroundNormal = hitInfo.normal;
|
||||
m_IsGrounded = true;
|
||||
m_Animator.applyRootMotion = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_IsGrounded = false;
|
||||
m_GroundNormal = Vector3.up;
|
||||
m_Animator.applyRootMotion = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce7a80d520cacc042b5fe14f373d8173
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityStandardAssets.CrossPlatformInput;
|
||||
|
||||
namespace UnityStandardAssets.Characters.ThirdPerson
|
||||
{
|
||||
[RequireComponent(typeof (ThirdPersonCharacter))]
|
||||
public class ThirdPersonUserControl : MonoBehaviour
|
||||
{
|
||||
private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object
|
||||
private Transform m_Cam; // A reference to the main camera in the scenes transform
|
||||
private Vector3 m_CamForward; // The current forward direction of the camera
|
||||
private Vector3 m_Move;
|
||||
private bool m_Jump; // the world-relative desired move direction, calculated from the camForward and user input.
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// get the transform of the main camera
|
||||
if (Camera.main != null)
|
||||
{
|
||||
m_Cam = Camera.main.transform;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning(
|
||||
"Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.", gameObject);
|
||||
// we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
|
||||
}
|
||||
|
||||
// get the third person character ( this should never be null due to require component )
|
||||
m_Character = GetComponent<ThirdPersonCharacter>();
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!m_Jump)
|
||||
{
|
||||
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Fixed update is called in sync with physics
|
||||
private void FixedUpdate()
|
||||
{
|
||||
// read inputs
|
||||
float h = CrossPlatformInputManager.GetAxis("Horizontal");
|
||||
float v = CrossPlatformInputManager.GetAxis("Vertical");
|
||||
bool crouch = Input.GetKey(KeyCode.C);
|
||||
|
||||
// calculate move direction to pass to character
|
||||
if (m_Cam != null)
|
||||
{
|
||||
// calculate camera relative direction to move:
|
||||
m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized;
|
||||
m_Move = v*m_CamForward + h*m_Cam.right;
|
||||
}
|
||||
else
|
||||
{
|
||||
// we use world-relative directions in the case of no main camera
|
||||
m_Move = v*Vector3.forward + h*Vector3.right;
|
||||
}
|
||||
#if !MOBILE_INPUT
|
||||
// walk speed multiplier
|
||||
if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f;
|
||||
#endif
|
||||
|
||||
// pass all parameters to the character control script
|
||||
m_Character.Move(m_Move, crouch, m_Jump);
|
||||
m_Jump = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 521b611700410be45810047f0a74e899
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0de3730b71e479c47995d4a98395073e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+52
@@ -0,0 +1,52 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b5b7be0f2332c24f89a2af018daa62d
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 1
|
||||
heightScale: .25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 8
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 4096
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: .5, y: .5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 0
|
||||
textureType: 1
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
BIN
Binary file not shown.
+52
@@ -0,0 +1,52 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e2f32e9a1fefc24092337ae061f3dbc
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
linearTexture: 0
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: .25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
cubemapConvolution: 0
|
||||
cubemapConvolutionSteps: 8
|
||||
cubemapConvolutionExponent: 1.5
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 4096
|
||||
textureSettings:
|
||||
filterMode: 2
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
rGBM: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: .5, y: .5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 0
|
||||
textureType: 0
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
In the ThirdPersonCharacter folder you'll find two ready-made character prefabs, which are used in the ThirdPersonCharacter sample scenes. These prefabs demonstrate how you can use the ThirdPersonCharacters scripts and animations we've included, including an AI-controlled variant which is able to walk towards a specified target, or follow a waypoint-based route.
|
||||
|
||||
The simplest way to get started setting up your own character is to take our ThirdPersonCharacter and replace the art with your own model. To do so, make sure you've imported your own rigged model with a Humanoid avatar, then follow these steps:
|
||||
|
||||
1) Start with a suitable scene. There ought to be enough flat ground to walk around on.
|
||||
|
||||
2) Place the "ThirdPersonCharacter" prefab in the scene.
|
||||
|
||||
3) Unfold the ThirdPersonCharacter hierarchy in the hierarchy window, and delete all child of "ThirdPersonController".
|
||||
|
||||
4) Place your own character model as a child of the ThirdPersonCharacter.
|
||||
|
||||
5) Drop the Avatar of your model (created by model importer, cf documentation) inside the Avatar slot of the Animator component on "ThirdPersonController"
|
||||
|
||||
6) Make sure your character model's position in the inspector is set to zero on X and Z, and that it's Y position is appropriately adjusted so that your character's feet are at the same position as the ThirdPersonCharacter GameObject. (if you find it easier, you could add your character first before deleting Ethan, so that you can use Ethan's feet as a guide for where your character's feet should be)
|
||||
|
||||
7) Hit play, and try controlling your character!
|
||||
|
||||
You'll probably want to add a camera rig so that the camera follows the character as it runs off. See the Camera Rig guidelines for instructions on how to do that.
|
||||
|
||||
The ThirdPersonCharacter script exposes a number of properties which determine the jump power, the amount of control while in air, and various other speed and behaviour modifiers. For more detail about each setting, see the comments in the script.
|
||||
|
||||
The ThirdPersonUserControl script takes input from the "CrossPlatformInput" class included in the sample assets, however if you're not targeting mobile or prefer to use a different system to read input, you can simply use Unity's built-in Input class in place of CrossPlatformInput. For more information, see the CrossPlatformInput guidelines.
|
||||
|
||||
The sample scenes provided works on standalone and also include cross platform touch controls which are set up and ready to publish to mobile.
|
||||
|
||||
The ThirdPersonAIControl component can be added instead of the user control component, allowing the character to be AI controlled. This relies on a NavMeshAgent to pathfind the way to the target. The NavMeshAgent should be a child object of the Character, as demonstrated in the AI Character Prefab provided. If you want to create your own AI characters, you can follow the steps above, but start with the AI prefab we provided.
|
||||
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af82a5dcdad0f544c99fd1a84212021d
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 710bc43f80d178548bd226c252c8e65b
|
||||
folderAsset: yes
|
||||
timeCreated: 1436977288
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
|
||||
Importing the CrossPlatformInput package adds a menu item to Unity, "CrossPlatformInput", which allows you to enable or disable the CrossPlatformInput in the editor. You must enable the CrossPlatformInput in order to see the control rigs in the editor, and to start using Unity Remote to control your game.
|
||||
|
||||
The CrossPlatformInput sample assets contains two main sections.
|
||||
|
||||
1) The folder of prefabs provide a variety of ready-to-use "MobileControlRigs". Each control rig is suitable for a different purpose, and each implements the touch or tilt-based equivalent of some of the default standalone axes or buttons. These are ready to drop into your scene, and to use them you simply need to read the axes via the CrossPlatformInput class, rather than Unity's regular Input class.
|
||||
|
||||
2) The set of scripts provided are the scripts we used to put together the control rigs prefabs. They provide a simplified way of reading basic mobile input, such as tilt, taps and swipe gestures. They are designed so that various mobile controls can be read in the same way as regular Unity axes and buttons. You can use these scripts to build your own MobileControlRigs.
|
||||
|
||||
|
||||
|
||||
For example the Car control rig feeds the tilt input of the mobile device to the "Horizontal" axis, and has an accelerator and brake touch button which are fed as a pair into the "Vertical" axis. These are virtual equivalents of the real "Horizontal" and "Vertical" axes defined in Unity's Input Manager.
|
||||
|
||||
Therefore when you read CrossPlatformInput.GetAxis("Horizontal"), you will either get the "real" input value - if your build target is non-mobile, or the value from the mobile control rig - if your build target is set to a mobile platform.
|
||||
|
||||
The CrossPlatformInput scripts and prefabs are provided together as an example of how you can implement a cross-platform control solution in Unity. They also allow us to provide our other sample scenes in a form that can be published as standalone or to mobile targets with no modification.
|
||||
|
||||
To use the CrossPlatformInput, you need to drop a "Mobile Control Rig" into your scene (or create your own), and then make calls to CrossPlatformInput functions, referring to the axes and buttons that the Rig implements.
|
||||
|
||||
When reading input from the CrossPlatformInput class, the values returned will be taken either from Unity's Input Manager settings, or from the mobile-specific controls set up, depending on which build target you have selected.
|
||||
|
||||
The CrossPlatformInput class is designed to be called instead of Unity's own Input class, and so mirrors certain parts of the Input API - specifically the functions relating to Axes and Buttons:
|
||||
GetAxis, GetAxisRaw
|
||||
GetButton, GetButtonDown, GetButtonUp
|
||||
|
||||
Notes for coders:
|
||||
This package sets two compiler define symbols. One is always set automatically, the other is optionally set from a menu item.
|
||||
|
||||
Importing the "CrossPlatformInput" package will automatically add a compiler define symbol, "CROSS_PLATFORM_INPUT". This enables the CrossPlatformInput functions defined in some of the other Sample Asset packages (such as the Characters, Planes, etc). Without this symbol defined, those packages use Unity's regular Input class, which means they can be imported alone and still work without the CrossPlatformInput package.
|
||||
|
||||
The optional define (which is set by default, but can be disabled using the "Mobile Input" menu), is "MOBILE_INPUT". This causes the MobileControlRigs to become active when a mobile build target is selected. It also enables certain mobile-specific control nuances in some of the packages, which make more sense when the character or vehicle is being controlled using mobile input (such as auto-leveling the character's look direction). This define is optional because some developers prefer to use standalone input methods instead of the Unity Remote app, when testing mobile apps in the editor's play mode.
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a3b997593a4f12c4c991490593f3b513
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f66eeca8ac36914e9ec9a716a9d9f73
|
||||
folderAsset: yes
|
||||
timeCreated: 1436977288
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityStandardAssets.CrossPlatformInput.PlatformSpecific;
|
||||
|
||||
namespace UnityStandardAssets.CrossPlatformInput
|
||||
{
|
||||
public static class CrossPlatformInputManager
|
||||
{
|
||||
public enum ActiveInputMethod
|
||||
{
|
||||
Hardware,
|
||||
Touch
|
||||
}
|
||||
|
||||
|
||||
private static VirtualInput activeInput;
|
||||
|
||||
private static VirtualInput s_TouchInput;
|
||||
private static VirtualInput s_HardwareInput;
|
||||
|
||||
|
||||
static CrossPlatformInputManager()
|
||||
{
|
||||
s_TouchInput = new MobileInput();
|
||||
s_HardwareInput = new StandaloneInput();
|
||||
#if MOBILE_INPUT
|
||||
activeInput = s_TouchInput;
|
||||
#else
|
||||
activeInput = s_HardwareInput;
|
||||
#endif
|
||||
}
|
||||
|
||||
public static void SwitchActiveInputMethod(ActiveInputMethod activeInputMethod)
|
||||
{
|
||||
switch (activeInputMethod)
|
||||
{
|
||||
case ActiveInputMethod.Hardware:
|
||||
activeInput = s_HardwareInput;
|
||||
break;
|
||||
|
||||
case ActiveInputMethod.Touch:
|
||||
activeInput = s_TouchInput;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool AxisExists(string name)
|
||||
{
|
||||
return activeInput.AxisExists(name);
|
||||
}
|
||||
|
||||
public static bool ButtonExists(string name)
|
||||
{
|
||||
return activeInput.ButtonExists(name);
|
||||
}
|
||||
|
||||
public static void RegisterVirtualAxis(VirtualAxis axis)
|
||||
{
|
||||
activeInput.RegisterVirtualAxis(axis);
|
||||
}
|
||||
|
||||
|
||||
public static void RegisterVirtualButton(VirtualButton button)
|
||||
{
|
||||
activeInput.RegisterVirtualButton(button);
|
||||
}
|
||||
|
||||
|
||||
public static void UnRegisterVirtualAxis(string name)
|
||||
{
|
||||
if (name == null)
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
}
|
||||
activeInput.UnRegisterVirtualAxis(name);
|
||||
}
|
||||
|
||||
|
||||
public static void UnRegisterVirtualButton(string name)
|
||||
{
|
||||
activeInput.UnRegisterVirtualButton(name);
|
||||
}
|
||||
|
||||
|
||||
// returns a reference to a named virtual axis if it exists otherwise null
|
||||
public static VirtualAxis VirtualAxisReference(string name)
|
||||
{
|
||||
return activeInput.VirtualAxisReference(name);
|
||||
}
|
||||
|
||||
|
||||
// returns the platform appropriate axis for the given name
|
||||
public static float GetAxis(string name)
|
||||
{
|
||||
return GetAxis(name, false);
|
||||
}
|
||||
|
||||
|
||||
public static float GetAxisRaw(string name)
|
||||
{
|
||||
return GetAxis(name, true);
|
||||
}
|
||||
|
||||
|
||||
// private function handles both types of axis (raw and not raw)
|
||||
private static float GetAxis(string name, bool raw)
|
||||
{
|
||||
return activeInput.GetAxis(name, raw);
|
||||
}
|
||||
|
||||
|
||||
// -- Button handling --
|
||||
public static bool GetButton(string name)
|
||||
{
|
||||
return activeInput.GetButton(name);
|
||||
}
|
||||
|
||||
|
||||
public static bool GetButtonDown(string name)
|
||||
{
|
||||
return activeInput.GetButtonDown(name);
|
||||
}
|
||||
|
||||
|
||||
public static bool GetButtonUp(string name)
|
||||
{
|
||||
return activeInput.GetButtonUp(name);
|
||||
}
|
||||
|
||||
|
||||
public static void SetButtonDown(string name)
|
||||
{
|
||||
activeInput.SetButtonDown(name);
|
||||
}
|
||||
|
||||
|
||||
public static void SetButtonUp(string name)
|
||||
{
|
||||
activeInput.SetButtonUp(name);
|
||||
}
|
||||
|
||||
|
||||
public static void SetAxisPositive(string name)
|
||||
{
|
||||
activeInput.SetAxisPositive(name);
|
||||
}
|
||||
|
||||
|
||||
public static void SetAxisNegative(string name)
|
||||
{
|
||||
activeInput.SetAxisNegative(name);
|
||||
}
|
||||
|
||||
|
||||
public static void SetAxisZero(string name)
|
||||
{
|
||||
activeInput.SetAxisZero(name);
|
||||
}
|
||||
|
||||
|
||||
public static void SetAxis(string name, float value)
|
||||
{
|
||||
activeInput.SetAxis(name, value);
|
||||
}
|
||||
|
||||
|
||||
public static Vector3 mousePosition
|
||||
{
|
||||
get { return activeInput.MousePosition(); }
|
||||
}
|
||||
|
||||
|
||||
public static void SetVirtualMousePositionX(float f)
|
||||
{
|
||||
activeInput.SetVirtualMousePositionX(f);
|
||||
}
|
||||
|
||||
|
||||
public static void SetVirtualMousePositionY(float f)
|
||||
{
|
||||
activeInput.SetVirtualMousePositionY(f);
|
||||
}
|
||||
|
||||
|
||||
public static void SetVirtualMousePositionZ(float f)
|
||||
{
|
||||
activeInput.SetVirtualMousePositionZ(f);
|
||||
}
|
||||
|
||||
|
||||
// virtual axis and button classes - applies to mobile input
|
||||
// Can be mapped to touch joysticks, tilt, gyro, etc, depending on desired implementation.
|
||||
// Could also be implemented by other input devices - kinect, electronic sensors, etc
|
||||
public class VirtualAxis
|
||||
{
|
||||
public string name { get; private set; }
|
||||
private float m_Value;
|
||||
public bool matchWithInputManager { get; private set; }
|
||||
|
||||
|
||||
public VirtualAxis(string name)
|
||||
: this(name, true)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public VirtualAxis(string name, bool matchToInputSettings)
|
||||
{
|
||||
this.name = name;
|
||||
matchWithInputManager = matchToInputSettings;
|
||||
}
|
||||
|
||||
|
||||
// removes an axes from the cross platform input system
|
||||
public void Remove()
|
||||
{
|
||||
UnRegisterVirtualAxis(name);
|
||||
}
|
||||
|
||||
|
||||
// a controller gameobject (eg. a virtual thumbstick) should update this class
|
||||
public void Update(float value)
|
||||
{
|
||||
m_Value = value;
|
||||
}
|
||||
|
||||
|
||||
public float GetValue
|
||||
{
|
||||
get { return m_Value; }
|
||||
}
|
||||
|
||||
|
||||
public float GetValueRaw
|
||||
{
|
||||
get { return m_Value; }
|
||||
}
|
||||
}
|
||||
|
||||
// a controller gameobject (eg. a virtual GUI button) should call the
|
||||
// 'pressed' function of this class. Other objects can then read the
|
||||
// Get/Down/Up state of this button.
|
||||
public class VirtualButton
|
||||
{
|
||||
public string name { get; private set; }
|
||||
public bool matchWithInputManager { get; private set; }
|
||||
|
||||
private int m_LastPressedFrame = -5;
|
||||
private int m_ReleasedFrame = -5;
|
||||
private bool m_Pressed;
|
||||
|
||||
|
||||
public VirtualButton(string name)
|
||||
: this(name, true)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public VirtualButton(string name, bool matchToInputSettings)
|
||||
{
|
||||
this.name = name;
|
||||
matchWithInputManager = matchToInputSettings;
|
||||
}
|
||||
|
||||
|
||||
// A controller gameobject should call this function when the button is pressed down
|
||||
public void Pressed()
|
||||
{
|
||||
if (m_Pressed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_Pressed = true;
|
||||
m_LastPressedFrame = Time.frameCount;
|
||||
}
|
||||
|
||||
|
||||
// A controller gameobject should call this function when the button is released
|
||||
public void Released()
|
||||
{
|
||||
m_Pressed = false;
|
||||
m_ReleasedFrame = Time.frameCount;
|
||||
}
|
||||
|
||||
|
||||
// the controller gameobject should call Remove when the button is destroyed or disabled
|
||||
public void Remove()
|
||||
{
|
||||
UnRegisterVirtualButton(name);
|
||||
}
|
||||
|
||||
|
||||
// these are the states of the button which can be read via the cross platform input system
|
||||
public bool GetButton
|
||||
{
|
||||
get { return m_Pressed; }
|
||||
}
|
||||
|
||||
|
||||
public bool GetButtonDown
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_LastPressedFrame - Time.frameCount == -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool GetButtonUp
|
||||
{
|
||||
get
|
||||
{
|
||||
return (m_ReleasedFrame == Time.frameCount - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loaded 100 of 4093 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user