Compare commits
No commits in common. "main" and "oleg" have entirely different histories.
266
.idea/.idea.Race_fields/.idea/workspace.xml
generated
266
.idea/.idea.Race_fields/.idea/workspace.xml
generated
@ -1,266 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="AutoImportSettings">
|
|
||||||
<option name="autoReloadType" value="SELECTIVE" />
|
|
||||||
</component>
|
|
||||||
<component name="BackgroundAgentGlobalSettings">
|
|
||||||
<option name="selectedModelId" value="auto" />
|
|
||||||
</component>
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="08e3a700-2b23-4d3a-a6cd-45bec0bfa361" name="Изменения" comment="add : Add vehicle selection flow and harvester enemy AI">
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.Race_fields/.idea/shelf/_____17_07_2026__12_36___.xml" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Prefabs/Harvesters/HarvesterEnemy.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Prefabs/Harvesters/HarvesterEnemy.prefab" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy.prefab" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_1.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_1.prefab" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_Player.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_Player.prefab" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Scenes/Demo Scene.unity" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Scenes/Demo Scene.unity" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Scripts/Editor/BuggyPrefabBuilder.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Scripts/Editor/BuggyPrefabBuilder.cs" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Scripts/GameFlow/SelectedVehicleSpawner.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Scripts/GameFlow/SelectedVehicleSpawner.cs" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Scripts/Vehicles/Controller/ArcadeBuggyController.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/_Project/Scripts/Vehicles/Controller/ArcadeBuggyController.cs" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Scripts/Vehicles/Wheels/BuggyWheelSetup.cs" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/_Project/Scripts/Vehicles/Wheels/BuggyWheelSetup.cs.meta" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Packages/manifest.json" beforeDir="false" afterPath="$PROJECT_DIR$/Packages/manifest.json" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Packages/packages-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/Packages/packages-lock.json" afterDir="false" />
|
|
||||||
</list>
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
||||||
</component>
|
|
||||||
<component name="CopilotPersistence">
|
|
||||||
<persistenceIdMap>
|
|
||||||
<entry key="_C:/development/resource/unity_projects/Race_fields" value="3Gd5QUXON5f4HtIkRnTsMfnv21w" />
|
|
||||||
</persistenceIdMap>
|
|
||||||
</component>
|
|
||||||
<component name="EmbeddingIndexingInfo">
|
|
||||||
<option name="cachedIndexableFilesCount" value="4" />
|
|
||||||
</component>
|
|
||||||
<component name="Git.Settings">
|
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="HighlightingSettingsPerFile">
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Art/Models/Harvesters.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Art/VFX/Effects/Trails.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Audio/SFX/Vehicles/11a70f994753862.mp3.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Audio/SFX/Vehicles/braking-tire-screeching.mp3.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Audio/SFX/Vehicles/cbb115cd9d4f69a.mp3.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Prefabs/Harvesters/HarvesterEnemy.prefab" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Prefabs/Harvesters/HarvesterEnemy.prefab.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy.prefab" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_1.prefab" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_1.prefab.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Prefabs/Vehicles/Player/Buggy_Player.prefab" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scenes/Demo Scene.unity" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scenes/Harvesters.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scenes/Selection Scene.unity" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scenes/Selection Scene.unity.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Screenshots.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scripts/GameFlow/GameSelectionState.cs.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scripts/GameFlow/SelectedVehicleSpawner.cs.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scripts/GameFlow/SelectionMenuController.cs.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scripts/Harvesters/AI/HarvesterChaseController.cs.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scripts/Harvesters/Visuals/HarvesterBladeSpinner.cs.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Project/Scripts/Weapons/Core/VehicleWeaponInventory.cs" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Assets/_Recovery/0 (3).unity.meta" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Library/PackageCache/com.unity.inputsystem@21a28c3a6c83/InputSystem/Plugins/XR/TrackedPoseDriver.cs" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="file://$PROJECT_DIR$/Library/PackageCache/com.unity.render-pipelines.universal@be00b5bbd9a1/Runtime/UniversalRenderPipeline.cs" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
</component>
|
|
||||||
<component name="McpProjectServerCommands">
|
|
||||||
<commands />
|
|
||||||
<urls />
|
|
||||||
</component>
|
|
||||||
<component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="false" />
|
|
||||||
<component name="ProjectColorInfo">{
|
|
||||||
"customColor": "",
|
|
||||||
"associatedIndex": 4
|
|
||||||
}</component>
|
|
||||||
<component name="ProjectId" id="3Gd5QUXON5f4HtIkRnTsMfnv21w" />
|
|
||||||
<component name="ProjectSessionTemplates">
|
|
||||||
<option name="panelTemplate">
|
|
||||||
<template>
|
|
||||||
<option name="modeId" value="file:///c%3A/snapshot/copilot-language-server-internal/dist/assets/agents/Plan.agent.md" />
|
|
||||||
<option name="model">
|
|
||||||
<model>
|
|
||||||
<option name="modelType" value="builtin_id" />
|
|
||||||
<option name="modelValue" value="auto" />
|
|
||||||
</model>
|
|
||||||
</option>
|
|
||||||
<option name="targetType" value="LOCAL" />
|
|
||||||
</template>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectViewState">
|
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
|
||||||
<option name="showLibraryContents" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
|
||||||
"keyToString": {
|
|
||||||
"RunOnceActivity.MCP Project settings loaded": "true",
|
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
|
||||||
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
|
||||||
"copilot.chat.legacySessionMetadata.migrated": "true",
|
|
||||||
"git-widget-placeholder": "main",
|
|
||||||
"node.js.detected.package.eslint": "true",
|
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
|
||||||
"nodejs_package_manager_path": "npm",
|
|
||||||
"settings.editor.selected.configurable": "ml.llm.LLMThirdPartyAiProvidersConfigurable",
|
|
||||||
"vue.rearranger.settings.migration": "true"
|
|
||||||
}
|
|
||||||
}]]></component>
|
|
||||||
<component name="RunManager" selected="Подключиться к редактору Unity.Подключиться к редактору Unity">
|
|
||||||
<configuration name="Модульные тесты (пакетный режим)" type="RunUnityExe" factoryName="Unity Executable">
|
|
||||||
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\6000.5.1f1\Editor\Unity.exe" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" value="-runTests -batchmode -projectPath C:\development\resource\unity_projects\Race_fields -testResults Logs/results.xml -logFile Logs/Editor.log -testPlatform EditMode -debugCodeOptimization" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="C:\development\resource\unity_projects\Race_fields" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="1" />
|
|
||||||
<option name="ENV_FILE_PATHS" value="" />
|
|
||||||
<option name="REDIRECT_INPUT_PATH" value="" />
|
|
||||||
<option name="MIXED_MODE_DEBUG" value="0" />
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
<configuration name="Запустить Unity" type="RunUnityExe" factoryName="Unity Executable">
|
|
||||||
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\6000.5.1f1\Editor\Unity.exe" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" value="-projectPath C:\development\resource\unity_projects\Race_fields -debugCodeOptimization" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="C:\development\resource\unity_projects\Race_fields" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="1" />
|
|
||||||
<option name="ENV_FILE_PATHS" value="" />
|
|
||||||
<option name="REDIRECT_INPUT_PATH" value="" />
|
|
||||||
<option name="MIXED_MODE_DEBUG" value="0" />
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
<configuration name="Подключиться к редактору Unity" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost" useMixedMode="false">
|
|
||||||
<option name="allowRunningInParallel" value="false" />
|
|
||||||
<option name="listenPortForConnections" value="false" />
|
|
||||||
<option name="pid" />
|
|
||||||
<option name="projectPathOnTarget" />
|
|
||||||
<option name="runtimes">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<option name="selectedOptions">
|
|
||||||
<list />
|
|
||||||
</option>
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
<configuration name="Attach to" type="UnityDevicePlayer" factoryName="UnityAttachToDevicePlayer">
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
||||||
<component name="TaskManager">
|
|
||||||
<task id="LOCAL-00001" summary="add: README.md">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1784280596021</created>
|
|
||||||
<option name="number" value="00001" />
|
|
||||||
<option name="presentableId" value="LOCAL-00001" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1784280596021</updated>
|
|
||||||
</task>
|
|
||||||
<task active="true" id="Default" summary="Задача по умолчанию">
|
|
||||||
<changelist id="08e3a700-2b23-4d3a-a6cd-45bec0bfa361" name="Изменения" comment="add: README.md" />
|
|
||||||
<created>1784288591435</created>
|
|
||||||
<option name="number" value="Default" />
|
|
||||||
<option name="presentableId" value="Default" />
|
|
||||||
<updated>1784288591435</updated>
|
|
||||||
<workItem from="1784288596356" duration="25132000" />
|
|
||||||
<workItem from="1784555385306" duration="519000" />
|
|
||||||
<workItem from="1784696802414" duration="8245000" />
|
|
||||||
<workItem from="1784711743710" duration="34585000" />
|
|
||||||
<workItem from="1784891813884" duration="848000" />
|
|
||||||
<workItem from="1784896188926" duration="7409000" />
|
|
||||||
<workItem from="1785928737366" duration="400000" />
|
|
||||||
<workItem from="1785998210045" duration="19283000" />
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00002" summary="update : rewrite car controller, add terrain">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1784528529649</created>
|
|
||||||
<option name="number" value="00002" />
|
|
||||||
<option name="presentableId" value="LOCAL-00002" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1784528529649</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00003" summary="add : particle system">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1784530020605</created>
|
|
||||||
<option name="number" value="00003" />
|
|
||||||
<option name="presentableId" value="LOCAL-00003" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1784530020605</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00004" summary="add : .gitignore">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1784534243727</created>
|
|
||||||
<option name="number" value="00004" />
|
|
||||||
<option name="presentableId" value="LOCAL-00004" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1784534243727</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00005" summary="add : Selectio scene">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1784701858222</created>
|
|
||||||
<option name="number" value="00005" />
|
|
||||||
<option name="presentableId" value="LOCAL-00005" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1784701858222</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00006" summary="add : Add vehicle selection flow and harvester enemy AI">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1784794230299</created>
|
|
||||||
<option name="number" value="00006" />
|
|
||||||
<option name="presentableId" value="LOCAL-00006" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1784794230299</updated>
|
|
||||||
</task>
|
|
||||||
<option name="localTasksCounter" value="7" />
|
|
||||||
<servers />
|
|
||||||
</component>
|
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
|
||||||
<option name="version" value="3" />
|
|
||||||
</component>
|
|
||||||
<component name="UnityCheckinConfiguration" checkUnsavedScenes="false" />
|
|
||||||
<component name="UnityProjectConfiguration" hasMinimizedUI="true" />
|
|
||||||
<component name="UnityProjectDiscoverer">
|
|
||||||
<option name="hasUnityReference" value="true" />
|
|
||||||
<option name="unityProject" value="true" />
|
|
||||||
<option name="unityProjectFolder" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="UnityUnitTestConfiguration" currentTestLauncher="Both" />
|
|
||||||
<component name="Vcs.Log.Tabs.Properties">
|
|
||||||
<option name="TAB_STATES">
|
|
||||||
<map>
|
|
||||||
<entry key="MAIN">
|
|
||||||
<value>
|
|
||||||
<State>
|
|
||||||
<option name="FILTERS">
|
|
||||||
<map>
|
|
||||||
<entry key="branch">
|
|
||||||
<value>
|
|
||||||
<list>
|
|
||||||
<option value="main" />
|
|
||||||
</list>
|
|
||||||
</value>
|
|
||||||
</entry>
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</State>
|
|
||||||
</value>
|
|
||||||
</entry>
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="VcsManagerConfiguration">
|
|
||||||
<MESSAGE value="Merge cviat into main and resolve Unity conflicts" />
|
|
||||||
<MESSAGE value="add: README.md" />
|
|
||||||
<MESSAGE value="update : rewrite car controller, add terrain" />
|
|
||||||
<MESSAGE value="add : particle system" />
|
|
||||||
<MESSAGE value="add : .gitignore" />
|
|
||||||
<MESSAGE value="add : Selectio scene" />
|
|
||||||
<MESSAGE value="add : Add vehicle selection flow and harvester enemy AI" />
|
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="add : Add vehicle selection flow and harvester enemy AI" />
|
|
||||||
</component>
|
|
||||||
<component name="XSLT-Support.FileAssociations.UIState">
|
|
||||||
<expand />
|
|
||||||
<select />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@ -1,137 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &-4075328406638620692
|
|
||||||
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: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
|
|
||||||
version: 10
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 8
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: BulletProjectile
|
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords: []
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap:
|
|
||||||
RenderType: Opaque
|
|
||||||
disabledShaderPasses:
|
|
||||||
- MOTIONVECTORS
|
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _BaseMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _BumpMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailAlbedoMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailMask:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailNormalMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _EmissionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
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}
|
|
||||||
- _OcclusionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParallaxMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _SpecGlossMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- unity_Lightmaps:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- unity_LightmapsInd:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- unity_ShadowMasks:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
|
||||||
- _AddPrecomputedVelocity: 0
|
|
||||||
- _AlphaClip: 0
|
|
||||||
- _AlphaToMask: 0
|
|
||||||
- _Blend: 0
|
|
||||||
- _BlendModePreserveSpecular: 1
|
|
||||||
- _BumpScale: 1
|
|
||||||
- _ClearCoatMask: 0
|
|
||||||
- _ClearCoatSmoothness: 0
|
|
||||||
- _Cull: 2
|
|
||||||
- _Cutoff: 0.5
|
|
||||||
- _DetailAlbedoMapScale: 1
|
|
||||||
- _DetailNormalMapScale: 1
|
|
||||||
- _DstBlend: 0
|
|
||||||
- _DstBlendAlpha: 0
|
|
||||||
- _EnvironmentReflections: 1
|
|
||||||
- _GlossMapScale: 0
|
|
||||||
- _Glossiness: 0
|
|
||||||
- _GlossyReflections: 0
|
|
||||||
- _Metallic: 0
|
|
||||||
- _OcclusionStrength: 1
|
|
||||||
- _Parallax: 0.005
|
|
||||||
- _QueueOffset: 0
|
|
||||||
- _ReceiveShadows: 1
|
|
||||||
- _Smoothness: 0.5
|
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
|
||||||
- _SrcBlendAlpha: 1
|
|
||||||
- _Surface: 0
|
|
||||||
- _WorkflowMode: 1
|
|
||||||
- _XRMotionVectorsPass: 1
|
|
||||||
- _ZWrite: 1
|
|
||||||
m_Colors:
|
|
||||||
- _BaseColor: {r: 0.009433985, g: 0.007559973, b: 0.0007564989, a: 1}
|
|
||||||
- _Color: {r: 0.009433985, g: 0.007559973, b: 0.0007564989, a: 1}
|
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e4f0cefa7e5ef2640b0cf25b80ee3520
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 2100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -9,7 +9,7 @@ Material:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Buggy Variant 1
|
m_Name: Buggy Variant 1
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
m_Parent: {fileID: 0}
|
m_Parent: {fileID: 3609018082110429662, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
m_ModifiedSerializedProperties: 0
|
m_ModifiedSerializedProperties: 0
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
m_InvalidKeywords: []
|
m_InvalidKeywords: []
|
||||||
|
|||||||
@ -9,7 +9,7 @@ Material:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Buggy_MetDark
|
m_Name: Buggy_MetDark
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
m_Parent: {fileID: 0}
|
m_Parent: {fileID: 3609018082110429662, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
m_ModifiedSerializedProperties: 0
|
m_ModifiedSerializedProperties: 0
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
m_InvalidKeywords: []
|
m_InvalidKeywords: []
|
||||||
|
|||||||
@ -9,7 +9,7 @@ Material:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Buggy_Metall
|
m_Name: Buggy_Metall
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
m_Parent: {fileID: 0}
|
m_Parent: {fileID: 3609018082110429662, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
m_ModifiedSerializedProperties: 8
|
m_ModifiedSerializedProperties: 8
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
m_InvalidKeywords: []
|
m_InvalidKeywords: []
|
||||||
@ -24,102 +24,14 @@ Material:
|
|||||||
m_LockedProperties:
|
m_LockedProperties:
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs: []
|
||||||
- _BaseMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _BumpMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailAlbedoMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailMask:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailNormalMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _EmissionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
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}
|
|
||||||
- _OcclusionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParallaxMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _SpecGlossMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- unity_Lightmaps:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- unity_LightmapsInd:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- unity_ShadowMasks:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Ints: []
|
m_Ints: []
|
||||||
m_Floats:
|
m_Floats:
|
||||||
- _AddPrecomputedVelocity: 0
|
|
||||||
- _AlphaClip: 0
|
|
||||||
- _AlphaToMask: 0
|
|
||||||
- _Blend: 0
|
|
||||||
- _BlendModePreserveSpecular: 1
|
|
||||||
- _BumpScale: 1
|
|
||||||
- _ClearCoatMask: 0
|
|
||||||
- _ClearCoatSmoothness: 0
|
|
||||||
- _Cull: 0
|
- _Cull: 0
|
||||||
- _Cutoff: 0.5
|
|
||||||
- _DetailAlbedoMapScale: 1
|
|
||||||
- _DetailNormalMapScale: 1
|
|
||||||
- _DstBlend: 0
|
|
||||||
- _DstBlendAlpha: 0
|
|
||||||
- _EnvironmentReflections: 1
|
|
||||||
- _GlossMapScale: 0
|
|
||||||
- _Glossiness: 0
|
|
||||||
- _GlossyReflections: 0
|
|
||||||
- _Metallic: 1
|
- _Metallic: 1
|
||||||
- _OcclusionStrength: 1
|
|
||||||
- _Parallax: 0.005
|
|
||||||
- _QueueOffset: 0
|
|
||||||
- _ReceiveShadows: 1
|
|
||||||
- _Smoothness: 0.892
|
- _Smoothness: 0.892
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
|
||||||
- _SrcBlendAlpha: 1
|
|
||||||
- _Surface: 0
|
|
||||||
- _WorkflowMode: 1
|
|
||||||
- _XRMotionVectorsPass: 1
|
|
||||||
- _ZWrite: 1
|
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 0.49524605, g: 0.49524605, b: 0.49524605, a: 1}
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
m_AllowLocking: 1
|
m_AllowLocking: 1
|
||||||
--- !u!114 &2562075926935352605
|
--- !u!114 &2562075926935352605
|
||||||
|
|||||||
@ -22,7 +22,7 @@ Material:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Buggy_Metall_Br_Rough
|
m_Name: Buggy_Metall_Br_Rough
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
m_Parent: {fileID: 0}
|
m_Parent: {fileID: -6478536213147159724, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
m_ModifiedSerializedProperties: 0
|
m_ModifiedSerializedProperties: 0
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
m_InvalidKeywords: []
|
m_InvalidKeywords: []
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 714fbae1b854ba649ad4a2e78ba5eca7
|
guid: 2a4579adec0226449b62f9ce4a0edd1b
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
|||||||
Binary file not shown.
@ -1,114 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e10ef6ed1df1f9445b52c82622b4ad31
|
|
||||||
ModelImporter:
|
|
||||||
serializedVersion: 24501
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
materials:
|
|
||||||
materialImportMode: 2
|
|
||||||
materialName: 0
|
|
||||||
materialSearch: 1
|
|
||||||
materialLocation: 1
|
|
||||||
searchTexturesGlobally: 0
|
|
||||||
animations:
|
|
||||||
legacyGenerateAnimations: 4
|
|
||||||
bakeSimulation: 0
|
|
||||||
resampleCurves: 1
|
|
||||||
optimizeGameObjects: 0
|
|
||||||
removeConstantScaleCurves: 0
|
|
||||||
motionNodeName:
|
|
||||||
animationImportErrors:
|
|
||||||
animationImportWarnings:
|
|
||||||
animationRetargetingWarnings:
|
|
||||||
animationDoRetargetingWarnings: 0
|
|
||||||
importAnimatedCustomProperties: 0
|
|
||||||
importConstraints: 0
|
|
||||||
animationCompression: 1
|
|
||||||
animationRotationError: 0.5
|
|
||||||
animationPositionError: 0.5
|
|
||||||
animationScaleError: 0.5
|
|
||||||
animationWrapMode: 0
|
|
||||||
extraExposedTransformPaths: []
|
|
||||||
extraUserProperties: []
|
|
||||||
clipAnimations: []
|
|
||||||
isReadable: 0
|
|
||||||
meshes:
|
|
||||||
lODScreenPercentages: []
|
|
||||||
globalScale: 1
|
|
||||||
meshCompression: 0
|
|
||||||
addColliders: 0
|
|
||||||
useSRGBMaterialColor: 1
|
|
||||||
sortHierarchyByName: 1
|
|
||||||
importPhysicalCameras: 1
|
|
||||||
importVisibility: 1
|
|
||||||
importBlendShapes: 1
|
|
||||||
importCameras: 1
|
|
||||||
importLights: 1
|
|
||||||
nodeNameCollisionStrategy: 1
|
|
||||||
fileIdsGeneration: 2
|
|
||||||
swapUVChannels: 0
|
|
||||||
generateSecondaryUV: 0
|
|
||||||
useFileUnits: 1
|
|
||||||
keepQuads: 0
|
|
||||||
weldVertices: 1
|
|
||||||
bakeAxisConversion: 0
|
|
||||||
preserveHierarchy: 0
|
|
||||||
skinWeightsMode: 0
|
|
||||||
maxBonesPerVertex: 4
|
|
||||||
minBoneWeight: 0.001
|
|
||||||
optimizeBones: 1
|
|
||||||
generateMeshLods: 0
|
|
||||||
meshLodGenerationFlags: 0
|
|
||||||
maximumMeshLod: -1
|
|
||||||
importUVs: -1
|
|
||||||
importVertexColors: 1
|
|
||||||
meshOptimizationFlags: -1
|
|
||||||
indexFormat: 0
|
|
||||||
secondaryUVAngleDistortion: 8
|
|
||||||
secondaryUVAreaDistortion: 15.000001
|
|
||||||
secondaryUVHardAngle: 88
|
|
||||||
secondaryUVMarginMethod: 1
|
|
||||||
secondaryUVMinLightmapResolution: 40
|
|
||||||
secondaryUVMinObjectScale: 1
|
|
||||||
secondaryUVPackMargin: 4
|
|
||||||
useFileScale: 1
|
|
||||||
strictVertexDataChecks: 0
|
|
||||||
tangentSpace:
|
|
||||||
normalSmoothAngle: 60
|
|
||||||
normalImportMode: 0
|
|
||||||
tangentImportMode: 3
|
|
||||||
normalCalculationMode: 4
|
|
||||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
|
||||||
blendShapeNormalImportMode: 1
|
|
||||||
normalSmoothingSource: 0
|
|
||||||
calculateBlendshapeNormalsDeltaFromImportedNormals: 0
|
|
||||||
referencedClips: []
|
|
||||||
importAnimation: 1
|
|
||||||
humanDescription:
|
|
||||||
serializedVersion: 3
|
|
||||||
human: []
|
|
||||||
skeleton: []
|
|
||||||
armTwist: 0.5
|
|
||||||
foreArmTwist: 0.5
|
|
||||||
upperLegTwist: 0.5
|
|
||||||
legTwist: 0.5
|
|
||||||
armStretch: 0.05
|
|
||||||
legStretch: 0.05
|
|
||||||
feetSpacing: 0
|
|
||||||
globalScale: 1
|
|
||||||
rootMotionBoneName:
|
|
||||||
hasTranslationDoF: 0
|
|
||||||
hasExtraRoot: 0
|
|
||||||
skeletonHasParents: 1
|
|
||||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
|
||||||
autoGenerateAvatarMappingIfUnspecified: 1
|
|
||||||
animationType: 2
|
|
||||||
humanoidOversampling: 1
|
|
||||||
avatarSetup: 0
|
|
||||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
|
||||||
importBlendShapeDeformPercent: 1
|
|
||||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
|
||||||
additionalBone: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,524 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a4df6771917b23c4f9be6ea9e36c1bd9
|
|
||||||
ScriptedImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
script: {fileID: 11500000, guid: b2a9591990af98743ba3ff7cf1000886, type: 3}
|
|
||||||
textureImporterSettings:
|
|
||||||
alphaSource: 1
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 1
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
convertToNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
nPOTScale: 1
|
|
||||||
sRGBTexture: 1
|
|
||||||
spriteMode: 2
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 0
|
|
||||||
flipbookColumns: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
cookieMode: 0
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 0
|
|
||||||
wrapV: 0
|
|
||||||
wrapW: 0
|
|
||||||
normalMap: 0
|
|
||||||
textureFormat: 0
|
|
||||||
maxTextureSize: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 0
|
|
||||||
linearTexture: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
rGBM: 0
|
|
||||||
cubemapConvolutionSteps: 0
|
|
||||||
cubemapConvolutionExponent: 0
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
singleSpriteImportData:
|
|
||||||
- name:
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0, y: 0}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 0
|
|
||||||
y: 0
|
|
||||||
width: 0
|
|
||||||
height: 0
|
|
||||||
spriteID: c167efbf8e46f0042b5dee4c94cc9cc1
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 0, y: 0}
|
|
||||||
spritePosition: {x: 0, y: 0}
|
|
||||||
multiSpriteImportData: []
|
|
||||||
layeredSpriteImportData:
|
|
||||||
- name: Wheel_FR
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1266
|
|
||||||
y: 605
|
|
||||||
width: 209
|
|
||||||
height: 256
|
|
||||||
spriteID: 49b4e606fa4744040b03727e67a07a28
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1266, y: 605}
|
|
||||||
spritePosition: {x: 803, y: 826}
|
|
||||||
- name: Wheel_RL
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1266
|
|
||||||
y: 340
|
|
||||||
width: 211
|
|
||||||
height: 257
|
|
||||||
spriteID: 02d5672b6e59d0d45b8b2479a3ab0bda
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1266, y: 340}
|
|
||||||
spritePosition: {x: 242, y: 825}
|
|
||||||
- name: Wheel_RR
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1266
|
|
||||||
y: 869
|
|
||||||
width: 202
|
|
||||||
height: 260
|
|
||||||
spriteID: 1ea701bd01d75f84982e26d49e8a49cf
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1266, y: 869}
|
|
||||||
spritePosition: {x: 810, y: 225}
|
|
||||||
- name: Wheel_RL
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1491
|
|
||||||
y: 4
|
|
||||||
width: 201
|
|
||||||
height: 261
|
|
||||||
spriteID: 92d779dabe4abc1449070e159e16f374
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1491, y: 4}
|
|
||||||
spritePosition: {x: 242, y: 225}
|
|
||||||
- name: FuelTank_R
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1700
|
|
||||||
y: 4
|
|
||||||
width: 104
|
|
||||||
height: 225
|
|
||||||
spriteID: d73ec417b1fbb7740a07656cad779ef2
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1700, y: 4}
|
|
||||||
spritePosition: {x: 827, y: 503}
|
|
||||||
- name: FuelTank_L
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1812
|
|
||||||
y: 4
|
|
||||||
width: 102
|
|
||||||
height: 225
|
|
||||||
spriteID: a93cb5906f19e4f4984ab1cc6f8605d4
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1812, y: 4}
|
|
||||||
spritePosition: {x: 323, y: 503}
|
|
||||||
- name: Bumper
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1491
|
|
||||||
y: 273
|
|
||||||
width: 390
|
|
||||||
height: 120
|
|
||||||
spriteID: 7e67b0d3c5dfa1e4bb0078317e63ad12
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1491, y: 273}
|
|
||||||
spritePosition: {x: 432, y: 1086}
|
|
||||||
- name: Cooler
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1922
|
|
||||||
y: 4
|
|
||||||
width: 109
|
|
||||||
height: 200
|
|
||||||
spriteID: f64d6eb9a2d7bc8499da8df9432b7f3b
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1922, y: 4}
|
|
||||||
spritePosition: {x: 572, y: 868}
|
|
||||||
- name: Layer 3
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1491
|
|
||||||
y: 401
|
|
||||||
width: 13
|
|
||||||
height: 277
|
|
||||||
spriteID: 6ccfde867c43bbf46a18f423979bd489
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1491, y: 401}
|
|
||||||
spritePosition: {x: 660, y: 833}
|
|
||||||
- name: Engine
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 1266
|
|
||||||
y: 4
|
|
||||||
width: 217
|
|
||||||
height: 328
|
|
||||||
spriteID: 14369f1f908ddd44c954eee16a044c41
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 1266, y: 4}
|
|
||||||
spritePosition: {x: 518, y: 792}
|
|
||||||
- name: Body
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 4
|
|
||||||
y: 1266
|
|
||||||
width: 993
|
|
||||||
height: 1190
|
|
||||||
spriteID: 900c3908f26b44046841cb05283ab51c
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 4, y: 1266}
|
|
||||||
spritePosition: {x: 0, y: 64}
|
|
||||||
- name: Layer 2
|
|
||||||
originalName:
|
|
||||||
pivot: {x: 0.5, y: 0.5}
|
|
||||||
alignment: 0
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
customData:
|
|
||||||
rect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 4
|
|
||||||
y: 4
|
|
||||||
width: 1254
|
|
||||||
height: 1254
|
|
||||||
spriteID: 100b593d2b80c2e459502c020f443c60
|
|
||||||
spriteBone: []
|
|
||||||
spriteOutline: []
|
|
||||||
vertices: []
|
|
||||||
spritePhysicsOutline: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
tessellationDetail: 0
|
|
||||||
uvTransform: {x: 4, y: 4}
|
|
||||||
spritePosition: {x: 0, y: 0}
|
|
||||||
spriteImportData: []
|
|
||||||
rigSpriteImportData: []
|
|
||||||
sharedRigSpriteImportData: []
|
|
||||||
mosaicSpriteImportData: []
|
|
||||||
platformSettings: []
|
|
||||||
mosaicLayers: 1
|
|
||||||
characterMode: 1
|
|
||||||
documentPivot: {x: 0, y: 0}
|
|
||||||
documentAlignment: 7
|
|
||||||
importHiddenLayers: 0
|
|
||||||
layerMappingOption: 2
|
|
||||||
generatePhysicsShape: 0
|
|
||||||
paperDollMode: 0
|
|
||||||
keepDupilcateSpriteName: 1
|
|
||||||
generateTileAssets: 0
|
|
||||||
tilePaletteCellLayout: 0
|
|
||||||
tilePaletteHexagonLayout: 0
|
|
||||||
tilePaletteCellSize: {x: 1, y: 1, z: 0}
|
|
||||||
tilePaletteCellSizing: 0
|
|
||||||
transparencySortMode: 0
|
|
||||||
transparencySortAxis: {x: 0, y: 0, z: 1}
|
|
||||||
tileTemplate: {instanceID: 0}
|
|
||||||
padding: 4
|
|
||||||
spriteSizeExpand: 0
|
|
||||||
skeletonAssetReferenceID:
|
|
||||||
pipeline: {instanceID: 0}
|
|
||||||
pipelineVersion:
|
|
||||||
spritePackingTag:
|
|
||||||
resliceFromLayer: 0
|
|
||||||
pSDLayerImportSetting: []
|
|
||||||
psdLayers:
|
|
||||||
- name: Wheel_FR
|
|
||||||
spriteName: Wheel_FR
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 49b4e606fa4744040b03727e67a07a28
|
|
||||||
layerID: 7
|
|
||||||
mosaicPosition: {x: 1266, y: 605}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Wheel_RL
|
|
||||||
spriteName: Wheel_RL
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 02d5672b6e59d0d45b8b2479a3ab0bda
|
|
||||||
layerID: 9
|
|
||||||
mosaicPosition: {x: 1266, y: 340}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Wheel_RR
|
|
||||||
spriteName: Wheel_RR
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 1ea701bd01d75f84982e26d49e8a49cf
|
|
||||||
layerID: 12
|
|
||||||
mosaicPosition: {x: 1266, y: 869}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Wheel_RL
|
|
||||||
spriteName: Wheel_RL
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 92d779dabe4abc1449070e159e16f374
|
|
||||||
layerID: 14
|
|
||||||
mosaicPosition: {x: 1491, y: 4}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: FuelTank_R
|
|
||||||
spriteName: FuelTank_R
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: d73ec417b1fbb7740a07656cad779ef2
|
|
||||||
layerID: 16
|
|
||||||
mosaicPosition: {x: 1700, y: 4}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: FuelTank_L
|
|
||||||
spriteName: FuelTank_L
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: a93cb5906f19e4f4984ab1cc6f8605d4
|
|
||||||
layerID: 18
|
|
||||||
mosaicPosition: {x: 1812, y: 4}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Bumper
|
|
||||||
spriteName: Bumper
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 7e67b0d3c5dfa1e4bb0078317e63ad12
|
|
||||||
layerID: 20
|
|
||||||
mosaicPosition: {x: 1491, y: 273}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Cooler
|
|
||||||
spriteName: Cooler
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: f64d6eb9a2d7bc8499da8df9432b7f3b
|
|
||||||
layerID: 24
|
|
||||||
mosaicPosition: {x: 1922, y: 4}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Layer 3
|
|
||||||
spriteName: Layer 3
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 6ccfde867c43bbf46a18f423979bd489
|
|
||||||
layerID: 28
|
|
||||||
mosaicPosition: {x: 1491, y: 401}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Engine
|
|
||||||
spriteName: Engine
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 14369f1f908ddd44c954eee16a044c41
|
|
||||||
layerID: 22
|
|
||||||
mosaicPosition: {x: 1266, y: 4}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Body
|
|
||||||
spriteName: Body
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 900c3908f26b44046841cb05283ab51c
|
|
||||||
layerID: 10
|
|
||||||
mosaicPosition: {x: 4, y: 1266}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
- name: Layer 2
|
|
||||||
spriteName: Layer 2
|
|
||||||
isGroup: 0
|
|
||||||
parentIndex: -1
|
|
||||||
spriteID: 100b593d2b80c2e459502c020f443c60
|
|
||||||
layerID: 5
|
|
||||||
mosaicPosition: {x: 4, y: 4}
|
|
||||||
flatten: 0
|
|
||||||
isImported: 1
|
|
||||||
isVisible: 1
|
|
||||||
mosaicPSDLayers: []
|
|
||||||
rigPSDLayers: []
|
|
||||||
sharedRigPSDLayers: []
|
|
||||||
importFileNodeState: 1
|
|
||||||
platformSettingsDirtyTick: 0
|
|
||||||
spriteSizeExpandChanged: 0
|
|
||||||
generateGOHierarchy: 0
|
|
||||||
textureAssetName:
|
|
||||||
prefabAssetName:
|
|
||||||
spriteLibAssetName:
|
|
||||||
skeletonAssetName:
|
|
||||||
secondarySpriteTextures: []
|
|
||||||
Binary file not shown.
@ -1,23 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 913d8a886d245de4990489f960596b1e
|
|
||||||
AudioImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 8
|
|
||||||
defaultSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
loadType: 0
|
|
||||||
sampleRateSetting: 0
|
|
||||||
sampleRateOverride: 44100
|
|
||||||
compressionFormat: 1
|
|
||||||
quality: 1
|
|
||||||
conversionMode: 0
|
|
||||||
preloadAudioData: 0
|
|
||||||
platformSettingOverrides: {}
|
|
||||||
forceToMono: 0
|
|
||||||
normalize: 1
|
|
||||||
loadInBackground: 0
|
|
||||||
ambisonic: 0
|
|
||||||
3D: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,23 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 45d84e15e1dc9ba4c9c98c338a4145b2
|
|
||||||
AudioImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 8
|
|
||||||
defaultSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
loadType: 0
|
|
||||||
sampleRateSetting: 0
|
|
||||||
sampleRateOverride: 44100
|
|
||||||
compressionFormat: 1
|
|
||||||
quality: 1
|
|
||||||
conversionMode: 0
|
|
||||||
preloadAudioData: 0
|
|
||||||
platformSettingOverrides: {}
|
|
||||||
forceToMono: 0
|
|
||||||
normalize: 1
|
|
||||||
loadInBackground: 0
|
|
||||||
ambisonic: 0
|
|
||||||
3D: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,23 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 7416f0cbb9cb08641b85fe5f89726245
|
|
||||||
AudioImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 8
|
|
||||||
defaultSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
loadType: 0
|
|
||||||
sampleRateSetting: 0
|
|
||||||
sampleRateOverride: 44100
|
|
||||||
compressionFormat: 1
|
|
||||||
quality: 1
|
|
||||||
conversionMode: 0
|
|
||||||
preloadAudioData: 0
|
|
||||||
platformSettingOverrides: {}
|
|
||||||
forceToMono: 0
|
|
||||||
normalize: 1
|
|
||||||
loadInBackground: 0
|
|
||||||
ambisonic: 0
|
|
||||||
3D: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d6bcac2507ddd5e448851a12c20f7eaa
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,769 +0,0 @@
|
|||||||
# Race Fields Architecture
|
|
||||||
|
|
||||||
Этот документ фиксирует текущую архитектуру проекта по фактическим сценам, prefab'ам и скриптам.
|
|
||||||
|
|
||||||
Главная цель: видеть не просто граф зависимостей, а слои проекта, ответственность каждого блока и места, где архитектура сейчас хрупкая.
|
|
||||||
|
|
||||||
## Как Читать Диаграммы
|
|
||||||
|
|
||||||
Главная диаграмма читается сверху вниз:
|
|
||||||
|
|
||||||
1. `Entry / Scene Layer` - откуда стартует игра.
|
|
||||||
2. `Scene Bootstrap Layer` - кто собирает игровую сцену.
|
|
||||||
3. `Runtime Entity Layer` - реальные игровые объекты.
|
|
||||||
4. `Subsystem Layer` - системы, которые обслуживают player/enemies.
|
|
||||||
5. `Asset / Data Layer` - prefab'ы, sprites, render textures, static state.
|
|
||||||
|
|
||||||
Связи на главной диаграмме показывают только важные runtime-зависимости. Детальные связи вынесены ниже в отдельные диаграммы.
|
|
||||||
|
|
||||||
## Current Architecture Overview
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TB
|
|
||||||
subgraph L1["ENTRY / SCENE LAYER"]
|
|
||||||
SelectionScene["Selection Scene"]
|
|
||||||
DemoScene["Demo Scene"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph L2["SCENE BOOTSTRAP LAYER"]
|
|
||||||
SelectionMenu["SelectionMenuController\nвыбор машины / режима / карты"]
|
|
||||||
SelectedVehicleSpawner["SelectedVehicleSpawner\nсоздает player и биндует сцену"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph L3["RUNTIME ENTITY LAYER"]
|
|
||||||
Player["Player Vehicle Instance\nBuggy prefab clone"]
|
|
||||||
Harvester["Harvester Enemy\nHarvester prefab instance"]
|
|
||||||
Terrain["Terrain\nTerrainCollider"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph L4["PLAYER SUBSYSTEMS"]
|
|
||||||
VehicleControl["ArcadeBuggyController\ninput + physics + wheels + sound + effects"]
|
|
||||||
WheelRig["WheelColliders / WheelVisuals"]
|
|
||||||
DamageCore["VehicleDamageController\nмодули здоровья"]
|
|
||||||
ImpactDamage["VehicleImpactDamageReceiver\nterrain / landing / collision damage"]
|
|
||||||
DamageHitboxes["DamageHitbox\nзоны урона"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph L5["SCENE SUBSYSTEMS"]
|
|
||||||
FollowCamera["BuggyFollowCamera"]
|
|
||||||
RearViewCamera["RearViewMirrorCamera"]
|
|
||||||
DamageHUD["VehicleDamageHud"]
|
|
||||||
HarvesterAI["HarvesterChaseController"]
|
|
||||||
BladeDamage["BladeDamageSource"]
|
|
||||||
BladeVisual["HarvesterBladeSpinner"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph L6["ASSET / DATA LAYER"]
|
|
||||||
GameSelectionState["GameSelectionState static\nвыбор между сценами"]
|
|
||||||
VehiclePrefabs["Player Vehicle Prefabs\nBuggy / Buggy_1 / Buggy_Player"]
|
|
||||||
HarvesterPrefab["HarvesterEnemy Prefab"]
|
|
||||||
DamageUISprites["MDP_Buggy_1.psb\nHUD base + overlay sprites"]
|
|
||||||
RearViewRT["RearViewMirror RenderTexture"]
|
|
||||||
end
|
|
||||||
|
|
||||||
SelectionScene --> SelectionMenu
|
|
||||||
SelectionMenu --> GameSelectionState
|
|
||||||
SelectionMenu --> DemoScene
|
|
||||||
|
|
||||||
DemoScene --> SelectedVehicleSpawner
|
|
||||||
DemoScene --> Terrain
|
|
||||||
DemoScene --> Harvester
|
|
||||||
|
|
||||||
SelectedVehicleSpawner --> GameSelectionState
|
|
||||||
SelectedVehicleSpawner --> VehiclePrefabs
|
|
||||||
SelectedVehicleSpawner --> Player
|
|
||||||
SelectedVehicleSpawner --> FollowCamera
|
|
||||||
SelectedVehicleSpawner --> RearViewCamera
|
|
||||||
SelectedVehicleSpawner --> DamageHUD
|
|
||||||
|
|
||||||
VehiclePrefabs --> Player
|
|
||||||
Player --> VehicleControl
|
|
||||||
Player --> WheelRig
|
|
||||||
Player --> DamageCore
|
|
||||||
Player --> ImpactDamage
|
|
||||||
Player --> DamageHitboxes
|
|
||||||
|
|
||||||
VehicleControl --> WheelRig
|
|
||||||
ImpactDamage --> DamageCore
|
|
||||||
ImpactDamage --> WheelRig
|
|
||||||
DamageHitboxes --> DamageCore
|
|
||||||
DamageCore --> DamageHUD
|
|
||||||
DamageUISprites --> DamageHUD
|
|
||||||
|
|
||||||
HarvesterPrefab --> Harvester
|
|
||||||
Harvester --> HarvesterAI
|
|
||||||
Harvester --> BladeVisual
|
|
||||||
Harvester --> BladeDamage
|
|
||||||
HarvesterAI --> Player
|
|
||||||
BladeDamage --> DamageHitboxes
|
|
||||||
|
|
||||||
FollowCamera --> Player
|
|
||||||
RearViewCamera --> Player
|
|
||||||
RearViewCamera --> RearViewRT
|
|
||||||
```
|
|
||||||
|
|
||||||
## Main Runtime Flow
|
|
||||||
|
|
||||||
Это основной путь от выбора машины до gameplay.
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
sequenceDiagram
|
|
||||||
participant PlayerInput as Player Input
|
|
||||||
participant SelectionMenu as SelectionMenuController
|
|
||||||
participant SelectionState as GameSelectionState
|
|
||||||
participant UnityScene as Unity SceneManager
|
|
||||||
participant DemoScene as Demo Scene
|
|
||||||
participant Spawner as SelectedVehicleSpawner
|
|
||||||
participant Vehicle as Player Vehicle
|
|
||||||
participant Camera as Cameras
|
|
||||||
participant HUD as VehicleDamageHud
|
|
||||||
participant Enemy as Harvester
|
|
||||||
|
|
||||||
PlayerInput->>SelectionMenu: left/right/space
|
|
||||||
SelectionMenu->>SelectionMenu: choose vehicle, mode, map
|
|
||||||
SelectionMenu->>SelectionState: SetSelection(vehiclePrefab, mode, sceneName)
|
|
||||||
SelectionMenu->>UnityScene: LoadScene(sceneName)
|
|
||||||
UnityScene->>DemoScene: load gameplay scene
|
|
||||||
DemoScene->>Spawner: Start()
|
|
||||||
Spawner->>SelectionState: read selected prefab
|
|
||||||
Spawner->>Vehicle: Instantiate(prefab at spawn point)
|
|
||||||
Spawner->>Camera: SetTarget(vehicle)
|
|
||||||
Spawner->>HUD: Bind(vehicle.VehicleDamageController)
|
|
||||||
Enemy->>Vehicle: auto find / chase target
|
|
||||||
```
|
|
||||||
|
|
||||||
Проблема этого flow:
|
|
||||||
|
|
||||||
- `GameSelectionState` - static.
|
|
||||||
- `SelectedVehicleSpawner` уже не просто spawner, а bootstrap сцены.
|
|
||||||
- Камеры, HUD и враг частично умеют искать player сами, частично получают его от spawner.
|
|
||||||
|
|
||||||
## Scene Composition
|
|
||||||
|
|
||||||
### Selection Scene
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart LR
|
|
||||||
subgraph SelectionScene["Selection Scene"]
|
|
||||||
MainCamera["Main Camera"]
|
|
||||||
Light["Directional Light"]
|
|
||||||
PreviewRoot["VehiclePreviewRoot"]
|
|
||||||
PreviewFloor["Preview Floor"]
|
|
||||||
Canvas["Selection Canvas"]
|
|
||||||
EventSystem["EventSystem\nInputSystemUIInputModule"]
|
|
||||||
Menu["SelectionMenuController"]
|
|
||||||
end
|
|
||||||
|
|
||||||
Menu --> PreviewRoot
|
|
||||||
Menu --> Canvas
|
|
||||||
Menu -->|"spawns preview prefab"| PreviewVehicle["Runtime Preview Vehicle"]
|
|
||||||
Menu -->|"writes selected data"| GameSelectionState["GameSelectionState"]
|
|
||||||
Menu -->|"loads selected map"| SceneManager["SceneManager.LoadScene"]
|
|
||||||
```
|
|
||||||
|
|
||||||
Что важно:
|
|
||||||
|
|
||||||
- Preview использует настоящий gameplay prefab.
|
|
||||||
- После spawn preview отключаются gameplay-компоненты.
|
|
||||||
- Это быстро, но preview и gameplay связаны слишком плотно.
|
|
||||||
|
|
||||||
### Demo Scene
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart LR
|
|
||||||
subgraph DemoScene["Demo Scene"]
|
|
||||||
Terrain["Terrain + TerrainCollider"]
|
|
||||||
ExistingBuggy["Buggy_1 scene instance\nтестовый объект"]
|
|
||||||
SpawnPoint["Selected Vehicle Spawn Point"]
|
|
||||||
Spawner["SelectedVehicleSpawner"]
|
|
||||||
FollowCamera["Buggy_ThirdPersonCamera"]
|
|
||||||
RearCamera["RearViewMirrorCamera"]
|
|
||||||
HudCanvas["Gameplay HUD Canvas"]
|
|
||||||
Harvester["Harvester"]
|
|
||||||
MachineGun["MachineGun"]
|
|
||||||
end
|
|
||||||
|
|
||||||
Spawner --> SpawnPoint
|
|
||||||
Spawner -->|"destroys existing ArcadeBuggyController if enabled"| ExistingBuggy
|
|
||||||
Spawner -->|"spawns selected prefab"| SpawnedPlayer["Buggy(Clone)"]
|
|
||||||
Spawner --> FollowCamera
|
|
||||||
Spawner --> RearCamera
|
|
||||||
Spawner --> HudCanvas
|
|
||||||
Harvester -->|"chases"| SpawnedPlayer
|
|
||||||
```
|
|
||||||
|
|
||||||
Что важно:
|
|
||||||
|
|
||||||
- В сцене есть и тестовая машина `Buggy_1`, и spawner.
|
|
||||||
- Spawner может удалить старую машину и создать выбранную.
|
|
||||||
- Для финальной архитектуры лучше оставить один путь создания player.
|
|
||||||
|
|
||||||
## Vehicle Prefab Composition
|
|
||||||
|
|
||||||
Все три player-prefab'а сейчас должны иметь одну и ту же структуру:
|
|
||||||
|
|
||||||
- `Buggy.prefab`
|
|
||||||
- `Buggy_1.prefab`
|
|
||||||
- `Buggy_Player.prefab`
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TB
|
|
||||||
subgraph VehicleRoot["PLAYER VEHICLE PREFAB ROOT"]
|
|
||||||
Transform["Transform"]
|
|
||||||
Rigidbody["Rigidbody"]
|
|
||||||
BoxCollider["BoxCollider"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Control["CONTROL / PHYSICS"]
|
|
||||||
ArcadeBuggyController["ArcadeBuggyController"]
|
|
||||||
BuggyWheelSetup["BuggyWheelSetup"]
|
|
||||||
WheelColliders["WheelCollider_FL / FR / RL / RR"]
|
|
||||||
WheelVisuals["Wheel visuals"]
|
|
||||||
VehicleAudio["EngineSound / TireScreechSound"]
|
|
||||||
VehicleVFX["Smoke / Skid Trails"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Damage["DAMAGE"]
|
|
||||||
VehicleDamageController["VehicleDamageController"]
|
|
||||||
VehicleImpactDamageReceiver["VehicleImpactDamageReceiver"]
|
|
||||||
DamageModules["DamageModules"]
|
|
||||||
DamageHitboxes["DamageHitboxes"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Modules["MODULES"]
|
|
||||||
Body["Body Module"]
|
|
||||||
Engine["Engine Module"]
|
|
||||||
FL["FrontLeftWheel Module"]
|
|
||||||
FR["FrontRightWheel Module"]
|
|
||||||
RL["RearLeftWheel Module"]
|
|
||||||
RR["RearRightWheel Module"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Hitboxes["HITBOXES"]
|
|
||||||
BodyBox["Body Hitbox"]
|
|
||||||
EngineBox["Engine Hitbox"]
|
|
||||||
FLBox["FrontLeftWheel Hitbox"]
|
|
||||||
FRBox["FrontRightWheel Hitbox"]
|
|
||||||
RLBox["RearLeftWheel Hitbox"]
|
|
||||||
RRBox["RearRightWheel Hitbox"]
|
|
||||||
end
|
|
||||||
|
|
||||||
VehicleRoot --> Control
|
|
||||||
VehicleRoot --> Damage
|
|
||||||
|
|
||||||
ArcadeBuggyController --> WheelColliders
|
|
||||||
ArcadeBuggyController --> WheelVisuals
|
|
||||||
ArcadeBuggyController --> VehicleAudio
|
|
||||||
ArcadeBuggyController --> VehicleVFX
|
|
||||||
BuggyWheelSetup --> WheelColliders
|
|
||||||
|
|
||||||
VehicleDamageController --> DamageModules
|
|
||||||
DamageModules --> Modules
|
|
||||||
DamageHitboxes --> Hitboxes
|
|
||||||
DamageHitboxes --> VehicleDamageController
|
|
||||||
VehicleImpactDamageReceiver --> VehicleDamageController
|
|
||||||
VehicleImpactDamageReceiver --> ArcadeBuggyController
|
|
||||||
|
|
||||||
FL -->|"destroyed"| ArcadeBuggyController
|
|
||||||
FR -->|"destroyed"| ArcadeBuggyController
|
|
||||||
RL -->|"destroyed"| ArcadeBuggyController
|
|
||||||
RR -->|"destroyed"| ArcadeBuggyController
|
|
||||||
```
|
|
||||||
|
|
||||||
Ключевая проблема:
|
|
||||||
|
|
||||||
`Damage` зависит от `ArcadeBuggyController`. Это работает только пока все машины устроены как багги. Для нормальной архитектуры нужен wheel adapter/interface.
|
|
||||||
|
|
||||||
## Damage Architecture
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TB
|
|
||||||
subgraph DamageInput["DAMAGE INPUT SOURCES"]
|
|
||||||
BladeDamageSource["BladeDamageSource\ntrigger damage"]
|
|
||||||
ImpactReceiver["VehicleImpactDamageReceiver\nterrain / landing / collision"]
|
|
||||||
FutureWeapons["Future Weapons\nbullets / mines / rockets"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Routing["DAMAGE ROUTING"]
|
|
||||||
DamageHitbox["DamageHitbox\nexternal hit -> module type"]
|
|
||||||
DamageHit["DamageHit\namount / type / point / direction / source"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph State["DAMAGE STATE"]
|
|
||||||
DamageController["VehicleDamageController"]
|
|
||||||
ModuleBase["DamageableVehicleModule"]
|
|
||||||
WheelModule["VehicleWheelDamageModule"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Output["DAMAGE OUTPUT"]
|
|
||||||
Hud["VehicleDamageHud"]
|
|
||||||
WheelDetach["Wheel detach\nvisual + collider + rigidbody"]
|
|
||||||
ControllerEffect["ArcadeBuggyController.SetWheelEnabled(false)"]
|
|
||||||
end
|
|
||||||
|
|
||||||
BladeDamageSource --> DamageHitbox
|
|
||||||
FutureWeapons --> DamageHitbox
|
|
||||||
DamageHitbox --> DamageHit
|
|
||||||
ImpactReceiver --> DamageHit
|
|
||||||
DamageHit --> DamageController
|
|
||||||
DamageController --> ModuleBase
|
|
||||||
ModuleBase --> WheelModule
|
|
||||||
DamageController --> Hud
|
|
||||||
WheelModule --> WheelDetach
|
|
||||||
WheelModule --> ControllerEffect
|
|
||||||
```
|
|
||||||
|
|
||||||
### Damage Rules Сейчас
|
|
||||||
|
|
||||||
External damage:
|
|
||||||
|
|
||||||
- `BladeDamageSource` ищет `DamageHitbox`.
|
|
||||||
- `DamageHitbox` знает `VehicleModuleType`.
|
|
||||||
- `VehicleDamageController` передает damage в конкретный module.
|
|
||||||
|
|
||||||
Terrain / impact damage:
|
|
||||||
|
|
||||||
- `VehicleImpactDamageReceiver` висит на root машины.
|
|
||||||
- Считает collision damage через `OnCollisionEnter`.
|
|
||||||
- Считает landing damage по каждому `WheelCollider`.
|
|
||||||
- Отправляет damage напрямую в `VehicleDamageController`.
|
|
||||||
|
|
||||||
HUD:
|
|
||||||
|
|
||||||
- `VehicleDamageHud` слушает `VehicleDamageController.ModuleStateChanged`.
|
|
||||||
- Красит overlay:
|
|
||||||
- healthy - transparent;
|
|
||||||
- damaged - red;
|
|
||||||
- destroyed/detached - black.
|
|
||||||
|
|
||||||
## Enemy Architecture
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TB
|
|
||||||
subgraph HarvesterPrefab["HARVESTER PREFAB"]
|
|
||||||
HarvesterRoot["Root\nRigidbody + BoxCollider"]
|
|
||||||
Chase["HarvesterChaseController"]
|
|
||||||
HarvesterWheels["WheelColliders + WheelVisuals"]
|
|
||||||
Blades["Blades"]
|
|
||||||
Spinner["HarvesterBladeSpinner"]
|
|
||||||
BladeDamage["BladeDamageSource"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Target["TARGET"]
|
|
||||||
PlayerVehicle["ArcadeBuggyController player"]
|
|
||||||
PlayerHitboxes["Player DamageHitboxes"]
|
|
||||||
end
|
|
||||||
|
|
||||||
Chase --> HarvesterWheels
|
|
||||||
Chase -->|"FindFirstObjectByType / target"| PlayerVehicle
|
|
||||||
Blades --> Spinner
|
|
||||||
Blades --> BladeDamage
|
|
||||||
BladeDamage --> PlayerHitboxes
|
|
||||||
```
|
|
||||||
|
|
||||||
Проблема:
|
|
||||||
|
|
||||||
- Harvester сам ищет player.
|
|
||||||
- Нет `EnemyDirector`.
|
|
||||||
- Нет единого `TargetProvider`.
|
|
||||||
- При нескольких машинах враг может выбрать не ту.
|
|
||||||
|
|
||||||
## Camera And HUD Binding
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TB
|
|
||||||
Spawner["SelectedVehicleSpawner"]
|
|
||||||
Player["Spawned Player Vehicle"]
|
|
||||||
|
|
||||||
subgraph CameraSystem["CAMERA SYSTEM"]
|
|
||||||
FollowCamera["BuggyFollowCamera"]
|
|
||||||
RearViewCamera["RearViewMirrorCamera"]
|
|
||||||
RearViewRT["RearViewMirror RenderTexture"]
|
|
||||||
RearViewImage["Rear View UI Image"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph HUDSystem["HUD SYSTEM"]
|
|
||||||
DamageHud["VehicleDamageHud"]
|
|
||||||
HudBase["DamageHUD_BaseLayers"]
|
|
||||||
HudOverlays["DamageHUD_DamageOverlays"]
|
|
||||||
end
|
|
||||||
|
|
||||||
Spawner --> Player
|
|
||||||
Spawner -->|"SetTarget"| FollowCamera
|
|
||||||
Spawner -->|"SetTarget"| RearViewCamera
|
|
||||||
RearViewCamera --> RearViewRT
|
|
||||||
RearViewRT --> RearViewImage
|
|
||||||
|
|
||||||
Player -->|"VehicleDamageController"| DamageHud
|
|
||||||
DamageHud --> HudBase
|
|
||||||
DamageHud --> HudOverlays
|
|
||||||
```
|
|
||||||
|
|
||||||
Проблема:
|
|
||||||
|
|
||||||
- Камеры и HUD умеют искать player сами.
|
|
||||||
- Spawner тоже задает им player.
|
|
||||||
- Нужно выбрать один путь. Лучше: bind только через bootstrap.
|
|
||||||
|
|
||||||
## Current Dependency Table
|
|
||||||
|
|
||||||
| System | Owns | Depends On | Problem |
|
|
||||||
|---|---|---|---|
|
|
||||||
| `SelectionMenuController` | UI выбора, preview, load scene | `GameSelectionState`, real vehicle prefab | Preview завязан на gameplay prefab |
|
|
||||||
| `GameSelectionState` | выбранная машина/режим/карта | static global state | нет lifecycle, нет reset/session |
|
|
||||||
| `SelectedVehicleSpawner` | spawn player, bind camera/HUD | `GameSelectionState`, cameras, HUD, damage | делает больше, чем spawner |
|
|
||||||
| `ArcadeBuggyController` | input, drive, wheels, audio, VFX | wheel objects, audio, particles | слишком широкий класс |
|
|
||||||
| `VehicleDamageController` | health modules | modules array | ок, но нужен profile/config |
|
|
||||||
| `VehicleImpactDamageReceiver` | terrain/collision damage | `ArcadeBuggyController`, `VehicleDamageController` | damage зависит от конкретной машины |
|
|
||||||
| `VehicleWheelDamageModule` | wheel destruction | `ArcadeBuggyController` | damage знает controller |
|
|
||||||
| `VehicleDamageHud` | module damage UI | `VehicleDamageController`, scene UI sprites | mapping зашит в scene |
|
|
||||||
| `HarvesterChaseController` | enemy movement | player search, wheel colliders | нет EnemyDirector |
|
|
||||||
| `BladeDamageSource` | blade damage | `DamageHitbox` | нормальная связь для source damage |
|
|
||||||
| `BuggyFollowCamera` | follow camera | player search or external target | два способа binding |
|
|
||||||
| `RearViewMirrorCamera` | rear view | player search or external target | два способа binding |
|
|
||||||
|
|
||||||
## Architecture Problems To Fix Before Scaling
|
|
||||||
|
|
||||||
### 1. Нужен GameBootstrap
|
|
||||||
|
|
||||||
Сейчас gameplay-сцена собирается через `SelectedVehicleSpawner`, но по факту он уже делает bootstrap.
|
|
||||||
|
|
||||||
Нужно:
|
|
||||||
|
|
||||||
```text
|
|
||||||
GameBootstrap
|
|
||||||
-> read session request
|
|
||||||
-> create player
|
|
||||||
-> bind cameras
|
|
||||||
-> bind HUD
|
|
||||||
-> start enemies
|
|
||||||
-> start game mode
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Нужен GameSession
|
|
||||||
|
|
||||||
Сейчас состояние между сценами хранится в static `GameSelectionState`.
|
|
||||||
|
|
||||||
Нужно:
|
|
||||||
|
|
||||||
```text
|
|
||||||
GameSession
|
|
||||||
selected vehicle
|
|
||||||
selected map
|
|
||||||
selected game mode
|
|
||||||
player instance
|
|
||||||
active enemies
|
|
||||||
session state
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Нужен VehicleDefinition
|
|
||||||
|
|
||||||
Сейчас selection хранит `GameObject prefab`.
|
|
||||||
|
|
||||||
Лучше:
|
|
||||||
|
|
||||||
```text
|
|
||||||
VehicleDefinition
|
|
||||||
display name
|
|
||||||
gameplay prefab
|
|
||||||
preview settings
|
|
||||||
damage profile
|
|
||||||
HUD damage layout
|
|
||||||
audio profile
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Нужен Wheel Rig Adapter
|
|
||||||
|
|
||||||
Damage не должен знать `ArcadeBuggyController`.
|
|
||||||
|
|
||||||
Нужно:
|
|
||||||
|
|
||||||
```csharp
|
|
||||||
public interface IVehicleWheelRig
|
|
||||||
{
|
|
||||||
WheelCollider GetWheelCollider(WheelSlot slot);
|
|
||||||
Transform GetWheelVisual(WheelSlot slot);
|
|
||||||
void SetWheelEnabled(WheelSlot slot, bool enabled);
|
|
||||||
bool IsWheelGrounded(WheelSlot slot);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Тогда:
|
|
||||||
|
|
||||||
- `VehicleImpactDamageReceiver` зависит от `IVehicleWheelRig`;
|
|
||||||
- `VehicleWheelDamageModule` зависит от `IVehicleWheelRig`;
|
|
||||||
- конкретная багги просто предоставляет реализацию.
|
|
||||||
|
|
||||||
### 5. Нужен Input Layer
|
|
||||||
|
|
||||||
Сейчас `ArcadeBuggyController` сам читает keyboard.
|
|
||||||
|
|
||||||
Нужно:
|
|
||||||
|
|
||||||
```text
|
|
||||||
IPlayerInputSource
|
|
||||||
Throttle
|
|
||||||
Steering
|
|
||||||
Handbrake
|
|
||||||
|
|
||||||
KeyboardInputSource
|
|
||||||
GamepadInputSource
|
|
||||||
ArcadeCabinetInputSource
|
|
||||||
AIInputSource
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6. Нужны Game Modes
|
|
||||||
|
|
||||||
Сейчас есть enum:
|
|
||||||
|
|
||||||
- `Arena`
|
|
||||||
- `SurvivalRace`
|
|
||||||
|
|
||||||
Но нет runtime-режимов.
|
|
||||||
|
|
||||||
Нужно:
|
|
||||||
|
|
||||||
```text
|
|
||||||
IGameMode
|
|
||||||
ArenaMode
|
|
||||||
SurvivalRaceMode
|
|
||||||
```
|
|
||||||
|
|
||||||
Game mode должен отвечать за:
|
|
||||||
|
|
||||||
- правила старта;
|
|
||||||
- enemy spawn rules;
|
|
||||||
- win/lose;
|
|
||||||
- scoring;
|
|
||||||
- timer;
|
|
||||||
- map-specific logic.
|
|
||||||
|
|
||||||
## Target Architecture
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TB
|
|
||||||
subgraph Entry["ENTRY"]
|
|
||||||
Selection["Selection Scene"]
|
|
||||||
SessionRequest["GameSessionRequest"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Data["DATA / DEFINITIONS"]
|
|
||||||
VehicleDefinition["VehicleDefinition"]
|
|
||||||
MapDefinition["MapDefinition"]
|
|
||||||
GameModeDefinition["GameModeDefinition"]
|
|
||||||
DamageProfile["VehicleDamageProfile"]
|
|
||||||
HudDefinition["VehicleHudDefinition"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Bootstrap["GAMEPLAY BOOTSTRAP"]
|
|
||||||
GameBootstrap["GameBootstrap"]
|
|
||||||
GameSession["GameSession"]
|
|
||||||
VehicleFactory["VehicleFactory"]
|
|
||||||
CameraBinder["CameraRigBinder"]
|
|
||||||
HudBinder["HudBinder"]
|
|
||||||
EnemyDirector["EnemyDirector"]
|
|
||||||
GameModeRunner["GameModeRunner"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph Runtime["RUNTIME OBJECTS"]
|
|
||||||
Player["Player Vehicle"]
|
|
||||||
Enemies["Enemies"]
|
|
||||||
World["Map / Terrain / Hazards"]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph VehicleSystems["VEHICLE SYSTEMS"]
|
|
||||||
InputSource["IPlayerInputSource"]
|
|
||||||
VehicleController["IVehicleController"]
|
|
||||||
WheelRig["IVehicleWheelRig"]
|
|
||||||
DamageController["VehicleDamageController"]
|
|
||||||
ImpactReceiver["VehicleImpactDamageReceiver"]
|
|
||||||
VehicleAudio["VehicleAudioController"]
|
|
||||||
VehicleVFX["VehicleEffectsController"]
|
|
||||||
end
|
|
||||||
|
|
||||||
Selection --> SessionRequest
|
|
||||||
SessionRequest --> GameBootstrap
|
|
||||||
|
|
||||||
GameBootstrap --> GameSession
|
|
||||||
GameBootstrap --> VehicleFactory
|
|
||||||
GameBootstrap --> CameraBinder
|
|
||||||
GameBootstrap --> HudBinder
|
|
||||||
GameBootstrap --> EnemyDirector
|
|
||||||
GameBootstrap --> GameModeRunner
|
|
||||||
|
|
||||||
GameSession --> VehicleDefinition
|
|
||||||
GameSession --> MapDefinition
|
|
||||||
GameSession --> GameModeDefinition
|
|
||||||
|
|
||||||
VehicleDefinition --> DamageProfile
|
|
||||||
VehicleDefinition --> HudDefinition
|
|
||||||
VehicleFactory --> Player
|
|
||||||
|
|
||||||
Player --> InputSource
|
|
||||||
Player --> VehicleController
|
|
||||||
Player --> WheelRig
|
|
||||||
Player --> DamageController
|
|
||||||
Player --> ImpactReceiver
|
|
||||||
Player --> VehicleAudio
|
|
||||||
Player --> VehicleVFX
|
|
||||||
|
|
||||||
EnemyDirector --> Enemies
|
|
||||||
GameModeRunner --> Enemies
|
|
||||||
GameModeRunner --> World
|
|
||||||
CameraBinder --> Player
|
|
||||||
HudBinder --> Player
|
|
||||||
HudBinder --> HudDefinition
|
|
||||||
```
|
|
||||||
|
|
||||||
## Recommended Refactor Plan
|
|
||||||
|
|
||||||
### Step 1 - Rename / Split Spawner
|
|
||||||
|
|
||||||
Current:
|
|
||||||
|
|
||||||
```text
|
|
||||||
SelectedVehicleSpawner
|
|
||||||
```
|
|
||||||
|
|
||||||
Target:
|
|
||||||
|
|
||||||
```text
|
|
||||||
GameBootstrap
|
|
||||||
VehicleFactory
|
|
||||||
CameraRigBinder
|
|
||||||
HudBinder
|
|
||||||
```
|
|
||||||
|
|
||||||
Minimum first change:
|
|
||||||
|
|
||||||
- оставить spawn в `SelectedVehicleSpawner`;
|
|
||||||
- вынести camera/HUD binding в отдельные компоненты;
|
|
||||||
- или переименовать `SelectedVehicleSpawner` в `GameBootstrap` и явно признать его ответственность.
|
|
||||||
|
|
||||||
### Step 2 - Replace Static Selection With Session Request
|
|
||||||
|
|
||||||
Current:
|
|
||||||
|
|
||||||
```text
|
|
||||||
GameSelectionState static
|
|
||||||
```
|
|
||||||
|
|
||||||
Target:
|
|
||||||
|
|
||||||
```text
|
|
||||||
GameSessionRequest
|
|
||||||
GameSession
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 3 - Introduce VehicleDefinition
|
|
||||||
|
|
||||||
Current:
|
|
||||||
|
|
||||||
```text
|
|
||||||
SelectionMenuController.VehicleOption -> GameObject prefab
|
|
||||||
```
|
|
||||||
|
|
||||||
Target:
|
|
||||||
|
|
||||||
```text
|
|
||||||
SelectionMenuController.VehicleOption -> VehicleDefinition
|
|
||||||
VehicleDefinition -> gameplay prefab / preview / damage / HUD / audio
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 4 - Decouple Damage From ArcadeBuggyController
|
|
||||||
|
|
||||||
Current:
|
|
||||||
|
|
||||||
```text
|
|
||||||
VehicleImpactDamageReceiver -> ArcadeBuggyController
|
|
||||||
VehicleWheelDamageModule -> ArcadeBuggyController
|
|
||||||
```
|
|
||||||
|
|
||||||
Target:
|
|
||||||
|
|
||||||
```text
|
|
||||||
VehicleImpactDamageReceiver -> IVehicleWheelRig
|
|
||||||
VehicleWheelDamageModule -> IVehicleWheelRig
|
|
||||||
ArcadeBuggyController or BuggyWheelRig -> IVehicleWheelRig
|
|
||||||
```
|
|
||||||
|
|
||||||
### Step 5 - Split ArcadeBuggyController
|
|
||||||
|
|
||||||
Current:
|
|
||||||
|
|
||||||
```text
|
|
||||||
ArcadeBuggyController
|
|
||||||
input
|
|
||||||
physics
|
|
||||||
wheel visuals
|
|
||||||
audio
|
|
||||||
VFX
|
|
||||||
wheel API for damage
|
|
||||||
```
|
|
||||||
|
|
||||||
Target:
|
|
||||||
|
|
||||||
```text
|
|
||||||
ArcadeBuggyController / VehicleMotor
|
|
||||||
VehicleInputSource
|
|
||||||
VehicleWheelVisuals
|
|
||||||
VehicleAudioController
|
|
||||||
VehicleEffectsController
|
|
||||||
BuggyWheelRig
|
|
||||||
```
|
|
||||||
|
|
||||||
## What Is Safe To Add Now
|
|
||||||
|
|
||||||
Можно добавлять без сильного риска:
|
|
||||||
|
|
||||||
- tuning параметров машины;
|
|
||||||
- tuning damage thresholds;
|
|
||||||
- улучшение HUD;
|
|
||||||
- настройка harvester movement;
|
|
||||||
- новые визуальные эффекты;
|
|
||||||
- простые hazards, если они наносят урон через `DamageHitbox`.
|
|
||||||
|
|
||||||
## What Should Wait
|
|
||||||
|
|
||||||
Лучше не добавлять до bootstrap/session/refactor:
|
|
||||||
|
|
||||||
- оружие;
|
|
||||||
- несколько видов enemies;
|
|
||||||
- power-ups;
|
|
||||||
- полноценные game modes;
|
|
||||||
- scoring/results;
|
|
||||||
- несколько player vehicles;
|
|
||||||
- сохранение прогресса;
|
|
||||||
- arcade cabinet input;
|
|
||||||
- VR-specific gameplay.
|
|
||||||
|
|
||||||
Причина: все это сейчас будет цепляться к static state, scene object search и прямым ссылкам.
|
|
||||||
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
Текущая архитектура рабочая для prototype, но главный риск уже виден:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Нет единого runtime-контекста.
|
|
||||||
```
|
|
||||||
|
|
||||||
Сейчас обязанности размазаны между:
|
|
||||||
|
|
||||||
- `GameSelectionState`;
|
|
||||||
- `SelectedVehicleSpawner`;
|
|
||||||
- камерами, которые сами ищут player;
|
|
||||||
- harvester, который сам ищет player;
|
|
||||||
- HUD, который сам ищет damage controller.
|
|
||||||
|
|
||||||
Нормальная точка сборки должна выглядеть так:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Selection Scene
|
|
||||||
-> GameSessionRequest
|
|
||||||
-> Demo Scene
|
|
||||||
-> GameBootstrap
|
|
||||||
-> GameSession
|
|
||||||
-> Player / Cameras / HUD / Enemies / GameMode
|
|
||||||
```
|
|
||||||
|
|
||||||
После этого новые системы будут подключаться через session/bootstrap, а не случайно искать друг друга по сцене.
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: de5a8a5be1a98c64f8ae57f7dbad8078
|
|
||||||
TextScriptImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,650 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1 &3339298741944017579
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 2341523906103846636}
|
|
||||||
- component: {fileID: 2501443832293603630}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: WheelCollider_FR
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &2341523906103846636
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3339298741944017579}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 1.9216186, y: 0.17657976, z: 0.7350356}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 6862259535214135144}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!146 &2501443832293603630
|
|
||||||
WheelCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3339298741944017579}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
m_Radius: 1
|
|
||||||
m_SuspensionSpring:
|
|
||||||
spring: 65000
|
|
||||||
damper: 8500
|
|
||||||
targetPosition: 0.55
|
|
||||||
m_SuspensionDistance: 0.35
|
|
||||||
m_ForceAppPointDistance: 0.15
|
|
||||||
m_Mass: 220
|
|
||||||
m_WheelDampingRate: 1.2
|
|
||||||
m_ForwardFriction:
|
|
||||||
m_ExtremumSlip: 0.35
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.8
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.35
|
|
||||||
m_SidewaysFriction:
|
|
||||||
m_ExtremumSlip: 0.28
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.65
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.25
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
--- !u!1 &3650619672134271181
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 9043762048047890421}
|
|
||||||
- component: {fileID: 5585513332569899037}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: WheelCollider_FL
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &9043762048047890421
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3650619672134271181}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -1.7403082, y: 0.16376202, z: 0.7350353}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 6862259535214135144}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!146 &5585513332569899037
|
|
||||||
WheelCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3650619672134271181}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
m_Radius: 1
|
|
||||||
m_SuspensionSpring:
|
|
||||||
spring: 65000
|
|
||||||
damper: 8500
|
|
||||||
targetPosition: 0.55
|
|
||||||
m_SuspensionDistance: 0.35
|
|
||||||
m_ForceAppPointDistance: 0.15
|
|
||||||
m_Mass: 220
|
|
||||||
m_WheelDampingRate: 1.2
|
|
||||||
m_ForwardFriction:
|
|
||||||
m_ExtremumSlip: 0.35
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.8
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.35
|
|
||||||
m_SidewaysFriction:
|
|
||||||
m_ExtremumSlip: 0.28
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.65
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.25
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
--- !u!1 &4220187751944662163
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 6862259535214135144}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: WheelColliders
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &6862259535214135144
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4220187751944662163}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 9043762048047890421}
|
|
||||||
- {fileID: 2341523906103846636}
|
|
||||||
- {fileID: 5185461955860110645}
|
|
||||||
- {fileID: 8105902962228665843}
|
|
||||||
m_Father: {fileID: 7508790823005770425}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &5060349281540240539
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 8105902962228665843}
|
|
||||||
- component: {fileID: 2169601261042596014}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: WheelCollider_RR
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &8105902962228665843
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060349281540240539}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 1.9163063, y: 0.16070208, z: -1.7646651}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 6862259535214135144}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!146 &2169601261042596014
|
|
||||||
WheelCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060349281540240539}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
m_Radius: 0.835
|
|
||||||
m_SuspensionSpring:
|
|
||||||
spring: 65000
|
|
||||||
damper: 8500
|
|
||||||
targetPosition: 0.55
|
|
||||||
m_SuspensionDistance: 0.29224998
|
|
||||||
m_ForceAppPointDistance: 0.15
|
|
||||||
m_Mass: 220
|
|
||||||
m_WheelDampingRate: 1.2
|
|
||||||
m_ForwardFriction:
|
|
||||||
m_ExtremumSlip: 0.35
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.8
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.35
|
|
||||||
m_SidewaysFriction:
|
|
||||||
m_ExtremumSlip: 0.28
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.65
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.25
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
--- !u!1 &6901689348553057335
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 5185461955860110645}
|
|
||||||
- component: {fileID: 3545069760759377831}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: WheelCollider_RL
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &5185461955860110645
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6901689348553057335}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -1.744715, y: 0.1364725, z: -1.7646654}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 6862259535214135144}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!146 &3545069760759377831
|
|
||||||
WheelCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6901689348553057335}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
m_Radius: 0.835
|
|
||||||
m_SuspensionSpring:
|
|
||||||
spring: 65000
|
|
||||||
damper: 8500
|
|
||||||
targetPosition: 0.55
|
|
||||||
m_SuspensionDistance: 0.29224998
|
|
||||||
m_ForceAppPointDistance: 0.15
|
|
||||||
m_Mass: 220
|
|
||||||
m_WheelDampingRate: 1.2
|
|
||||||
m_ForwardFriction:
|
|
||||||
m_ExtremumSlip: 0.35
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.8
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.35
|
|
||||||
m_SidewaysFriction:
|
|
||||||
m_ExtremumSlip: 0.28
|
|
||||||
m_ExtremumValue: 1
|
|
||||||
m_AsymptoteSlip: 0.65
|
|
||||||
m_AsymptoteValue: 0.75
|
|
||||||
m_Stiffness: 1.25
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
--- !u!1001 &8051921584296146258
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 0}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 163.4559
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0.7491313
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 104.04857
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8122145627593432382, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: -7664728788398519507, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 8e3501dfb51fb04479ac17d08a801b01, type: 2}
|
|
||||||
- target: {fileID: -2021238142412837144, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 536d0e1e844825b40be6a4e05f331ff3, type: 2}
|
|
||||||
- target: {fileID: -1120989108687609925, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 8e3501dfb51fb04479ac17d08a801b01, type: 2}
|
|
||||||
- target: {fileID: -887049932902998247, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: 919132149155446097, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: HarvesterEnemy
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 1572452237337188096, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 1572452237337188096, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 1572452237337188096, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 1572452237337188096, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 1572452237337188096, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 1986983560156708314, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: 4438303694591376117, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 2559ea3811cbaba40b8e47dadd6a7b9a, type: 2}
|
|
||||||
- target: {fileID: 6008359057637615197, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: 6846309238722795712, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: bd7a4fcb0f71b9846aeb33b4d16c9459, type: 2}
|
|
||||||
- target: {fileID: 8004537395834564576, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 536d0e1e844825b40be6a4e05f331ff3, type: 2}
|
|
||||||
- target: {fileID: 8666396105146483402, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 536d0e1e844825b40be6a4e05f331ff3, type: 2}
|
|
||||||
- target: {fileID: 9002406800346883408, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 2559ea3811cbaba40b8e47dadd6a7b9a, type: 2}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects:
|
|
||||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 6862259535214135144}
|
|
||||||
m_AddedComponents:
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 309838903600352088}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 4013279782791818711}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 4587263311667884763}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 6917201045494101815}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 4177302620104308133, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 3524664443606531945}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 4177302620104308133, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 5132510599987276558}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 4177302620104308133, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 8479407567185228081}
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
--- !u!4 &3259800674814833756 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 4792691420746940686, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!4 &3958912292318364215 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -2788064876795922587, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!1 &6216918693069553911 stripped
|
|
||||||
GameObject:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 4177302620104308133, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!114 &3524664443606531945
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6216918693069553911}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 314cfddae3eb4784ca1f6c04a3ac82f5, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Harvesters.Visuals.HarvesterBladeSpinner
|
|
||||||
rotationSpeed: 720
|
|
||||||
rotationSpace: 1
|
|
||||||
--- !u!114 &5132510599987276558
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6216918693069553911}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 5483916f7ebff2c448991626172509ea, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.BladeDamageSource
|
|
||||||
damagePerSecond: 45
|
|
||||||
tickInterval: 0.25
|
|
||||||
activationDelay: 1.25
|
|
||||||
--- !u!65 &8479407567185228081
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6216918693069553911}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 0.065, y: 0.014, z: 0.014}
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &7169525912848336899 stripped
|
|
||||||
GameObject:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!54 &309838903600352088
|
|
||||||
Rigidbody:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7169525912848336899}
|
|
||||||
serializedVersion: 5
|
|
||||||
m_Mass: 2500
|
|
||||||
m_LinearDamping: 0.03
|
|
||||||
m_AngularDamping: 1.2
|
|
||||||
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
|
||||||
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
|
||||||
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ImplicitCom: 1
|
|
||||||
m_ImplicitTensor: 1
|
|
||||||
m_UseGravity: 1
|
|
||||||
m_IsKinematic: 0
|
|
||||||
m_Interpolate: 1
|
|
||||||
m_Constraints: 0
|
|
||||||
m_CollisionDetection: 2
|
|
||||||
--- !u!114 &4013279782791818711
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7169525912848336899}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 4d8c0e258b3d5b74e8d179d4cc96c122, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Harvesters.AI.HarvesterChaseController
|
|
||||||
target: {fileID: 0}
|
|
||||||
autoFindPlayer: 1
|
|
||||||
targetSearchInterval: 0.35
|
|
||||||
frontLeftCollider: {fileID: 5585513332569899037}
|
|
||||||
frontRightCollider: {fileID: 2501443832293603630}
|
|
||||||
rearLeftCollider: {fileID: 3545069760759377831}
|
|
||||||
rearRightCollider: {fileID: 2169601261042596014}
|
|
||||||
frontLeftVisual: {fileID: 7676333813219013543}
|
|
||||||
frontRightVisual: {fileID: 3958912292318364215}
|
|
||||||
rearLeftVisual: {fileID: 7543941119015121129}
|
|
||||||
rearRightVisual: {fileID: 3259800674814833756}
|
|
||||||
maxSpeedKmh: 55
|
|
||||||
motorTorque: 30000
|
|
||||||
brakeTorque: 6500
|
|
||||||
maxSteerAngle: 28
|
|
||||||
steeringResponse: 4
|
|
||||||
stoppingDistance: 1.4
|
|
||||||
reverseDistance: 0.7
|
|
||||||
downforce: 45
|
|
||||||
centerOfMass: {x: 0, y: -0.65, z: 0.2}
|
|
||||||
--- !u!65 &4587263311667884763
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7169525912848336899}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 2.6, y: 2.3, z: 4.8}
|
|
||||||
m_Center: {x: 0.08, y: 1.65, z: -0.05}
|
|
||||||
--- !u!114 &6917201045494101815
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7169525912848336899}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: b84a36537942ca148a8bc4a133d96e93, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.SimpleDamageReceiver
|
|
||||||
maxHealth: 100
|
|
||||||
destroyOnDeath: 1
|
|
||||||
destroyDelay: 0
|
|
||||||
--- !u!4 &7508790823005770425 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!4 &7543941119015121129 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 508724786338088379, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!4 &7676333813219013543 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -8846761903566321931, guid: b1dfea447adb74843b8085dbe3a6bd24, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8051921584296146258}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9291a3f8ca3422546ae45ab051e89b2b
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,287 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1 &5060312022363176025
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4449135132298046214}
|
|
||||||
- component: {fileID: 455824722436531212}
|
|
||||||
- component: {fileID: 5609845134334554891}
|
|
||||||
- component: {fileID: 8172290100206215017}
|
|
||||||
- component: {fileID: 3755552695787435108}
|
|
||||||
- component: {fileID: 5767152562348033804}
|
|
||||||
- component: {fileID: 4256604062628749703}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: BulletProjectile
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4449135132298046214
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 0.07, y: 0.07, z: 0.07}
|
|
||||||
m_ConstrainProportionsScale: 1
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!33 &455824722436531212
|
|
||||||
MeshFilter:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
|
||||||
--- !u!135 &5609845134334554891
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.5
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!23 &8172290100206215017
|
|
||||||
MeshRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_CastShadows: 1
|
|
||||||
m_ReceiveShadows: 1
|
|
||||||
m_DynamicOccludee: 1
|
|
||||||
m_StaticShadowCaster: 0
|
|
||||||
m_MotionVectors: 1
|
|
||||||
m_LightProbeUsage: 1
|
|
||||||
m_ReflectionProbeUsage: 1
|
|
||||||
m_RayTracingMode: 2
|
|
||||||
m_RayTraceProcedural: 0
|
|
||||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
|
||||||
m_RayTracingAccelStructBuildFlags: 1
|
|
||||||
m_SmallMeshCulling: 1
|
|
||||||
m_ForceMeshLod: -1
|
|
||||||
m_MeshLodSelectionBias: 0
|
|
||||||
m_RenderingLayerMask: 1
|
|
||||||
m_RendererPriority: 0
|
|
||||||
m_Materials:
|
|
||||||
- {fileID: 2100000, guid: e4f0cefa7e5ef2640b0cf25b80ee3520, type: 2}
|
|
||||||
m_StaticBatchInfo:
|
|
||||||
firstSubMesh: 0
|
|
||||||
subMeshCount: 0
|
|
||||||
m_StaticBatchRoot: {fileID: 0}
|
|
||||||
m_ProbeAnchor: {fileID: 0}
|
|
||||||
m_LightProbeVolumeOverride: {fileID: 0}
|
|
||||||
m_ScaleInLightmap: 1
|
|
||||||
m_ReceiveGI: 1
|
|
||||||
m_PreserveUVs: 1
|
|
||||||
m_IgnoreNormalsForChartDetection: 0
|
|
||||||
m_ImportantGI: 0
|
|
||||||
m_StitchLightmapSeams: 1
|
|
||||||
m_SelectedEditorRenderState: 3
|
|
||||||
m_MinimumChartSize: 4
|
|
||||||
m_AutoUVMaxDistance: 0.5
|
|
||||||
m_AutoUVMaxAngle: 89
|
|
||||||
m_LightmapParameters: {fileID: 0}
|
|
||||||
m_GlobalIlluminationMeshLod: 0
|
|
||||||
m_SortingLayerID: 0
|
|
||||||
m_SortingLayer: 0
|
|
||||||
m_SortingOrder: 0
|
|
||||||
m_MaskInteraction: 0
|
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
|
||||||
--- !u!54 &3755552695787435108
|
|
||||||
Rigidbody:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
serializedVersion: 5
|
|
||||||
m_Mass: 0.03
|
|
||||||
m_LinearDamping: 0
|
|
||||||
m_AngularDamping: 0
|
|
||||||
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
|
||||||
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
|
||||||
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ImplicitCom: 1
|
|
||||||
m_ImplicitTensor: 1
|
|
||||||
m_UseGravity: 0
|
|
||||||
m_IsKinematic: 0
|
|
||||||
m_Interpolate: 1
|
|
||||||
m_Constraints: 0
|
|
||||||
m_CollisionDetection: 2
|
|
||||||
--- !u!114 &5767152562348033804
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 9a787488e597d6a4ca2a4d452e6ee62a, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::BulletProjectile
|
|
||||||
damage: 8
|
|
||||||
impactForce: 25
|
|
||||||
lifeTime: 2.5
|
|
||||||
--- !u!96 &4256604062628749703
|
|
||||||
TrailRenderer:
|
|
||||||
serializedVersion: 4
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5060312022363176025}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_CastShadows: 1
|
|
||||||
m_ReceiveShadows: 1
|
|
||||||
m_DynamicOccludee: 1
|
|
||||||
m_StaticShadowCaster: 0
|
|
||||||
m_MotionVectors: 0
|
|
||||||
m_LightProbeUsage: 0
|
|
||||||
m_ReflectionProbeUsage: 0
|
|
||||||
m_RayTracingMode: 0
|
|
||||||
m_RayTraceProcedural: 0
|
|
||||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
|
||||||
m_RayTracingAccelStructBuildFlags: 1
|
|
||||||
m_SmallMeshCulling: 1
|
|
||||||
m_ForceMeshLod: -1
|
|
||||||
m_MeshLodSelectionBias: 0
|
|
||||||
m_RenderingLayerMask: 1
|
|
||||||
m_RendererPriority: 0
|
|
||||||
m_Materials:
|
|
||||||
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_StaticBatchInfo:
|
|
||||||
firstSubMesh: 0
|
|
||||||
subMeshCount: 0
|
|
||||||
m_StaticBatchRoot: {fileID: 0}
|
|
||||||
m_ProbeAnchor: {fileID: 0}
|
|
||||||
m_LightProbeVolumeOverride: {fileID: 0}
|
|
||||||
m_ScaleInLightmap: 1
|
|
||||||
m_ReceiveGI: 1
|
|
||||||
m_PreserveUVs: 0
|
|
||||||
m_IgnoreNormalsForChartDetection: 0
|
|
||||||
m_ImportantGI: 0
|
|
||||||
m_StitchLightmapSeams: 1
|
|
||||||
m_SelectedEditorRenderState: 3
|
|
||||||
m_MinimumChartSize: 4
|
|
||||||
m_AutoUVMaxDistance: 0.5
|
|
||||||
m_AutoUVMaxAngle: 89
|
|
||||||
m_LightmapParameters: {fileID: 0}
|
|
||||||
m_GlobalIlluminationMeshLod: 0
|
|
||||||
m_SortingLayerID: 0
|
|
||||||
m_SortingLayer: 0
|
|
||||||
m_SortingOrder: 0
|
|
||||||
m_MaskInteraction: 0
|
|
||||||
m_Time: 3
|
|
||||||
m_PreviewTimeScale: 1
|
|
||||||
m_Parameters:
|
|
||||||
serializedVersion: 3
|
|
||||||
widthMultiplier: 1
|
|
||||||
widthCurve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve:
|
|
||||||
- serializedVersion: 3
|
|
||||||
time: 0
|
|
||||||
value: 0.21352497
|
|
||||||
inSlope: -0.070786595
|
|
||||||
outSlope: -0.070786595
|
|
||||||
tangentMode: 0
|
|
||||||
weightedMode: 0
|
|
||||||
inWeight: 0.33333334
|
|
||||||
outWeight: 0.942857
|
|
||||||
- serializedVersion: 3
|
|
||||||
time: 0.29931217
|
|
||||||
value: 0.12369752
|
|
||||||
inSlope: 0
|
|
||||||
outSlope: 0
|
|
||||||
tangentMode: 0
|
|
||||||
weightedMode: 0
|
|
||||||
inWeight: 0
|
|
||||||
outWeight: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
time: 0.65615445
|
|
||||||
value: 0
|
|
||||||
inSlope: 0
|
|
||||||
outSlope: 0
|
|
||||||
tangentMode: 0
|
|
||||||
weightedMode: 0
|
|
||||||
inWeight: 0
|
|
||||||
outWeight: 0
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
colorGradient:
|
|
||||||
serializedVersion: 2
|
|
||||||
key0: {r: 1, g: 0.94832873, b: 0, a: 1}
|
|
||||||
key1: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
key2: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
key3: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
key4: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
key5: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
key6: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
key7: {r: 0, g: 0, b: 0, a: 0}
|
|
||||||
ctime0: 0
|
|
||||||
ctime1: 65535
|
|
||||||
ctime2: 0
|
|
||||||
ctime3: 0
|
|
||||||
ctime4: 0
|
|
||||||
ctime5: 0
|
|
||||||
ctime6: 0
|
|
||||||
ctime7: 0
|
|
||||||
atime0: 24865
|
|
||||||
atime1: 65535
|
|
||||||
atime2: 0
|
|
||||||
atime3: 0
|
|
||||||
atime4: 0
|
|
||||||
atime5: 0
|
|
||||||
atime6: 0
|
|
||||||
atime7: 0
|
|
||||||
m_Mode: 0
|
|
||||||
m_ColorSpace: 0
|
|
||||||
m_NumColorKeys: 2
|
|
||||||
m_NumAlphaKeys: 2
|
|
||||||
numCornerVertices: 0
|
|
||||||
numCapVertices: 0
|
|
||||||
alignment: 0
|
|
||||||
textureMode: 0
|
|
||||||
textureScale: {x: 1, y: 1}
|
|
||||||
shadowBias: 0.5
|
|
||||||
generateLightingData: 0
|
|
||||||
m_MinVertexDistance: 0.1
|
|
||||||
m_Autodestruct: 0
|
|
||||||
m_Emitting: 1
|
|
||||||
m_ApplyActiveColorSpace: 1
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b53989f2534110c459cbd05c3562861f
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,42 +1,5 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!1 &678851920617152828
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4308219931449687786}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModules
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4308219931449687786
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 678851920617152828}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 5203170617531134041}
|
|
||||||
- {fileID: 4039219305083098774}
|
|
||||||
- {fileID: 917869650534139438}
|
|
||||||
- {fileID: 513069921206777595}
|
|
||||||
- {fileID: 5030994328003929438}
|
|
||||||
- {fileID: 1490784618976174324}
|
|
||||||
m_Father: {fileID: 6187829236652007928}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &904516071749555836
|
--- !u!1 &904516071749555836
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -80,7 +43,7 @@ AudioSource:
|
|||||||
serializedVersion: 4
|
serializedVersion: 4
|
||||||
OutputAudioMixerGroup: {fileID: 0}
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
m_audioClip: {fileID: 0}
|
m_audioClip: {fileID: 0}
|
||||||
m_Resource: {fileID: 8300000, guid: 45d84e15e1dc9ba4c9c98c338a4145b2, type: 3}
|
m_Resource: {fileID: 8300000, guid: f632e2ace80a32e47a2c531f64901a50, type: 3}
|
||||||
m_PlayOnAwake: 0
|
m_PlayOnAwake: 0
|
||||||
m_Volume: 0.4
|
m_Volume: 0.4
|
||||||
m_Pitch: 1
|
m_Pitch: 1
|
||||||
@ -166,374 +129,6 @@ AudioSource:
|
|||||||
m_PreInfinity: 2
|
m_PreInfinity: 2
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
--- !u!1 &980107703586752827
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1490784618976174324}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModule_RearRightWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &1490784618976174324
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 980107703586752827}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 4308219931449687786}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &985278927905599597
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 509780127314561339}
|
|
||||||
- component: {fileID: 4949023128094988400}
|
|
||||||
- component: {fileID: 4617614898393773024}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_RearRightWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &509780127314561339
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 985278927905599597}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 1.0023823, y: 0.42134243, z: -0.4222711}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 5756100871681110291}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &4949023128094988400
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 985278927905599597}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.60740626
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &4617614898393773024
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 985278927905599597}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 4162358059794313232}
|
|
||||||
moduleType: 5
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &1522199945063803671
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 165765137459173630}
|
|
||||||
- component: {fileID: 5518850499844772572}
|
|
||||||
- component: {fileID: 9097829637973307076}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_RearLeftWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &165765137459173630
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1522199945063803671}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -1.0329266, y: 0.42649394, z: -0.42227113}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 5756100871681110291}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &5518850499844772572
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1522199945063803671}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.60405797
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &9097829637973307076
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1522199945063803671}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 4162358059794313232}
|
|
||||||
moduleType: 4
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &2033152002869285067
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 5756100871681110291}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitboxes
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &5756100871681110291
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2033152002869285067}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 5784468902436153891}
|
|
||||||
- {fileID: 4254540126733534658}
|
|
||||||
- {fileID: 6456890869576959319}
|
|
||||||
- {fileID: 4314062963670830293}
|
|
||||||
- {fileID: 165765137459173630}
|
|
||||||
- {fileID: 509780127314561339}
|
|
||||||
m_Father: {fileID: 6187829236652007928}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &2087479700153931477
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 917869650534139438}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModule_FrontLeftWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &917869650534139438
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2087479700153931477}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 4308219931449687786}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &2134887713512700918
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 6456890869576959319}
|
|
||||||
- component: {fileID: 3641632203635272221}
|
|
||||||
- component: {fileID: 7977274247077034901}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_FrontLeftWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &6456890869576959319
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2134887713512700918}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -0.98700947, y: 0.42516497, z: 1.7977297}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 5756100871681110291}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &3641632203635272221
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2134887713512700918}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.60405797
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &7977274247077034901
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2134887713512700918}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 4162358059794313232}
|
|
||||||
moduleType: 2
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &2236652310159055060
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 513069921206777595}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModule_FrontRightWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &513069921206777595
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2236652310159055060}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 4308219931449687786}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &3142864022589553855
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4039219305083098774}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModule_Engine
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4039219305083098774
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3142864022589553855}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 4308219931449687786}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &3869626763326721352
|
--- !u!1 &3869626763326721352
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -560,7 +155,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 3869626763326721352}
|
m_GameObject: {fileID: 3869626763326721352}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: -0.98700947, y: 0.42516497, z: 1.7977297}
|
m_LocalPosition: {x: -0.9870148, y: 0.42516497, z: 1.7977295}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@ -631,7 +226,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 4325012347455046819}
|
m_GameObject: {fileID: 4325012347455046819}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 1.0023823, y: 0.42134243, z: -0.4222711}
|
m_LocalPosition: {x: 1.0023804, y: 0.42134243, z: -0.42227173}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@ -676,75 +271,6 @@ WheelCollider:
|
|||||||
m_LayerOverridePriority: 0
|
m_LayerOverridePriority: 0
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_ProvidesContacts: 0
|
m_ProvidesContacts: 0
|
||||||
--- !u!1 &4474454028331496979
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4254540126733534658}
|
|
||||||
- component: {fileID: 6151096057021924048}
|
|
||||||
- component: {fileID: 4665106538739430254}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_Engine
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4254540126733534658
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4474454028331496979}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.01256505, y: 0.50707626, z: 2.269475}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 5756100871681110291}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!65 &6151096057021924048
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4474454028331496979}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 1.2245655, y: 0.75567365, z: 1.1007986}
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &4665106538739430254
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4474454028331496979}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 4162358059794313232}
|
|
||||||
moduleType: 1
|
|
||||||
damageMultiplier: 1.2
|
|
||||||
--- !u!1 &4777080315795762327
|
--- !u!1 &4777080315795762327
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -780,75 +306,6 @@ Transform:
|
|||||||
- {fileID: 7660429726624174055}
|
- {fileID: 7660429726624174055}
|
||||||
m_Father: {fileID: 6187829236652007928}
|
m_Father: {fileID: 6187829236652007928}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &5074150975273399011
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 5784468902436153891}
|
|
||||||
- component: {fileID: 6844973523226333809}
|
|
||||||
- component: {fileID: 5764655060026937901}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_Body
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &5784468902436153891
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5074150975273399011}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.015743494, y: 0.76463735, z: 0.6496234}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 5756100871681110291}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!65 &6844973523226333809
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5074150975273399011}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 2.0409427, y: 1.0075649, z: 2.5554254}
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &5764655060026937901
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5074150975273399011}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 4162358059794313232}
|
|
||||||
moduleType: 0
|
|
||||||
damageMultiplier: 1
|
|
||||||
--- !u!1 &5884228197934813945
|
--- !u!1 &5884228197934813945
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -875,7 +332,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 5884228197934813945}
|
m_GameObject: {fileID: 5884228197934813945}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: -1.0329266, y: 0.42649394, z: -0.42227113}
|
m_LocalPosition: {x: -1.0329285, y: 0.42649394, z: -0.42227173}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@ -946,7 +403,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 6536870136428842500}
|
m_GameObject: {fileID: 6536870136428842500}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 1.0023823, y: 0.42134243, z: 1.7977293}
|
m_LocalPosition: {x: 1.0023804, y: 0.42134243, z: 1.7977295}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@ -1024,137 +481,6 @@ Transform:
|
|||||||
- {fileID: 7146618632555308886}
|
- {fileID: 7146618632555308886}
|
||||||
m_Father: {fileID: 6187829236652007928}
|
m_Father: {fileID: 6187829236652007928}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &8221003576484659173
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 5030994328003929438}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModule_RearLeftWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &5030994328003929438
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8221003576484659173}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 4308219931449687786}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &8344515166698737873
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 5203170617531134041}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageModule_Body
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &5203170617531134041
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8344515166698737873}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 4308219931449687786}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &8357043864206736957
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4314062963670830293}
|
|
||||||
- component: {fileID: 4207657310940732640}
|
|
||||||
- component: {fileID: 3830794235451668251}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_FrontRightWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4314062963670830293
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8357043864206736957}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 1.0023823, y: 0.42134243, z: 1.7977293}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 5756100871681110291}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &4207657310940732640
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8357043864206736957}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.60740626
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &3830794235451668251
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8357043864206736957}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 4162358059794313232}
|
|
||||||
moduleType: 3
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &8546225698448467078
|
--- !u!1 &8546225698448467078
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1198,7 +524,7 @@ AudioSource:
|
|||||||
serializedVersion: 4
|
serializedVersion: 4
|
||||||
OutputAudioMixerGroup: {fileID: 0}
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
m_audioClip: {fileID: 0}
|
m_audioClip: {fileID: 0}
|
||||||
m_Resource: {fileID: 8300000, guid: 7416f0cbb9cb08641b85fe5f89726245, type: 3}
|
m_Resource: {fileID: 8300000, guid: 771ce407ce807b74885ec23ebd1e6647, type: 3}
|
||||||
m_PlayOnAwake: 0
|
m_PlayOnAwake: 0
|
||||||
m_Volume: 0.65
|
m_Volume: 0.65
|
||||||
m_Pitch: 1
|
m_Pitch: 1
|
||||||
@ -1428,15 +754,15 @@ PrefabInstance:
|
|||||||
m_Modifications:
|
m_Modifications:
|
||||||
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
value: 0
|
value: 155.19724
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 0
|
value: 0.033763755
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
propertyPath: m_LocalPosition.z
|
propertyPath: m_LocalPosition.z
|
||||||
value: 0
|
value: 82.28427
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- target: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
propertyPath: m_LocalRotation.w
|
propertyPath: m_LocalRotation.w
|
||||||
@ -1527,12 +853,6 @@ PrefabInstance:
|
|||||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 9122830728132778127}
|
addedObject: {fileID: 9122830728132778127}
|
||||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 4308219931449687786}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 5756100871681110291}
|
|
||||||
m_AddedComponents:
|
m_AddedComponents:
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
@ -1545,7 +865,7 @@ PrefabInstance:
|
|||||||
addedObject: {fileID: 6756632559856253266}
|
addedObject: {fileID: 6756632559856253266}
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 4162358059794313232}
|
addedObject: {fileID: 4292201610895144585}
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: 1d88c2d74df3d234b885ec2e1187f328, type: 3}
|
||||||
--- !u!4 &18073668855899836 stripped
|
--- !u!4 &18073668855899836 stripped
|
||||||
Transform:
|
Transform:
|
||||||
@ -1663,7 +983,7 @@ MonoBehaviour:
|
|||||||
useSounds: 1
|
useSounds: 1
|
||||||
engineSound: {fileID: 4106908681420802530}
|
engineSound: {fileID: 4106908681420802530}
|
||||||
tireScreechSound: {fileID: 5596619143633281226}
|
tireScreechSound: {fileID: 5596619143633281226}
|
||||||
--- !u!114 &4162358059794313232
|
--- !u!114 &4292201610895144585
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@ -1672,23 +992,21 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 6815148326285687618}
|
m_GameObject: {fileID: 6815148326285687618}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 23a901881a64d704fbdbdf8716ec0229, type: 3}
|
m_Script: {fileID: 11500000, guid: 5f00271deee9d014d92d5672e1fe2baa, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.VehicleDamageController
|
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Vehicles.BuggyWheelSetup
|
||||||
moduleHealth: []
|
frontLeftWheelName: Wheel_FL
|
||||||
spawnGraceTime: 1
|
frontRightWheelName: Wheel_FR
|
||||||
minCollisionSpeed: 11
|
rearLeftWheelName: Wheel_RL
|
||||||
collisionDamagePerSpeed: 4.5
|
rearRightWheelName: Wheel_RR
|
||||||
maxCollisionDamage: 95
|
frontLeftColliderName: WheelCollider_FL
|
||||||
collisionCooldown: 0.25
|
frontRightColliderName: WheelCollider_FR
|
||||||
minAirTimeForLandingDamage: 0.45
|
rearLeftColliderName: WheelCollider_RL
|
||||||
minLandingDownSpeed: 9
|
rearRightColliderName: WheelCollider_RR
|
||||||
landingDamagePerSpeed: 4
|
radiusMultiplier: 0.5
|
||||||
maxLandingDamage: 75
|
minimumRadius: 0.12
|
||||||
landingWheelDamageShare: 0.65
|
suspensionDistance: 0.28
|
||||||
landingBodyDamageShare: 0.35
|
wheelMass: 20
|
||||||
logDamage: 0
|
|
||||||
lastDamageDebug:
|
|
||||||
--- !u!1001 &6985207696866215891
|
--- !u!1001 &6985207696866215891
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 28b4b793ebceaa84ba0cce962ec564c1
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -175,75 +175,6 @@ WheelCollider:
|
|||||||
m_LayerOverridePriority: 0
|
m_LayerOverridePriority: 0
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_ProvidesContacts: 0
|
m_ProvidesContacts: 0
|
||||||
--- !u!1 &1666953206663730719
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4479990610205060349}
|
|
||||||
- component: {fileID: 5825399517747744468}
|
|
||||||
- component: {fileID: 2024650573028944834}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_RearLeftWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4479990610205060349
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1666953206663730719}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -0.8716712, y: 0.27369422, z: -0.42227113}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 9194943108169963881}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &5825399517747744468
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1666953206663730719}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.51565677
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &2024650573028944834
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1666953206663730719}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 1251155925191827369}
|
|
||||||
moduleType: 4
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &2599938933167188421
|
--- !u!1 &2599938933167188421
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -322,7 +253,7 @@ AudioSource:
|
|||||||
serializedVersion: 4
|
serializedVersion: 4
|
||||||
OutputAudioMixerGroup: {fileID: 0}
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
m_audioClip: {fileID: 0}
|
m_audioClip: {fileID: 0}
|
||||||
m_Resource: {fileID: 8300000, guid: 45d84e15e1dc9ba4c9c98c338a4145b2, type: 3}
|
m_Resource: {fileID: 8300000, guid: f632e2ace80a32e47a2c531f64901a50, type: 3}
|
||||||
m_PlayOnAwake: 0
|
m_PlayOnAwake: 0
|
||||||
m_Volume: 0.4
|
m_Volume: 0.4
|
||||||
m_Pitch: 1
|
m_Pitch: 1
|
||||||
@ -408,75 +339,6 @@ AudioSource:
|
|||||||
m_PreInfinity: 2
|
m_PreInfinity: 2
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
--- !u!1 &4256784020541811601
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 8855745749561159609}
|
|
||||||
- component: {fileID: 5035463054206016886}
|
|
||||||
- component: {fileID: 6076283664317587352}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_FrontLeftWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &8855745749561159609
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4256784020541811601}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -0.8716712, y: 0.27369422, z: 1.8148861}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 9194943108169963881}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &5035463054206016886
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4256784020541811601}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.5156568
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &6076283664317587352
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4256784020541811601}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 1251155925191827369}
|
|
||||||
moduleType: 2
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &5725176332190465528
|
--- !u!1 &5725176332190465528
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -520,7 +382,7 @@ AudioSource:
|
|||||||
serializedVersion: 4
|
serializedVersion: 4
|
||||||
OutputAudioMixerGroup: {fileID: 0}
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
m_audioClip: {fileID: 0}
|
m_audioClip: {fileID: 0}
|
||||||
m_Resource: {fileID: 8300000, guid: 913d8a886d245de4990489f960596b1e, type: 3}
|
m_Resource: {fileID: 8300000, guid: 771ce407ce807b74885ec23ebd1e6647, type: 3}
|
||||||
m_PlayOnAwake: 0
|
m_PlayOnAwake: 0
|
||||||
m_Volume: 0.65
|
m_Volume: 0.65
|
||||||
m_Pitch: 1
|
m_Pitch: 1
|
||||||
@ -606,43 +468,6 @@ AudioSource:
|
|||||||
m_PreInfinity: 2
|
m_PreInfinity: 2
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
--- !u!1 &5972247958471006541
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 9194943108169963881}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitboxes
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &9194943108169963881
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 5972247958471006541}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 5036353294958251943}
|
|
||||||
- {fileID: 383979774159315010}
|
|
||||||
- {fileID: 8855745749561159609}
|
|
||||||
- {fileID: 8988962712716943782}
|
|
||||||
- {fileID: 4479990610205060349}
|
|
||||||
- {fileID: 6809863583008423600}
|
|
||||||
m_Father: {fileID: 4772777578382570152}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &6741570655071805230
|
--- !u!1 &6741570655071805230
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -714,75 +539,6 @@ WheelCollider:
|
|||||||
m_LayerOverridePriority: 0
|
m_LayerOverridePriority: 0
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_ProvidesContacts: 0
|
m_ProvidesContacts: 0
|
||||||
--- !u!1 &6879061424484390238
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 8988962712716943782}
|
|
||||||
- component: {fileID: 5441599143552244572}
|
|
||||||
- component: {fileID: 2059777941910514618}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_FrontRightWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &8988962712716943782
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6879061424484390238}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.87719953, y: 0.2736943, z: 1.8148861}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 9194943108169963881}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &5441599143552244572
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6879061424484390238}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.5156568
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &2059777941910514618
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6879061424484390238}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 1251155925191827369}
|
|
||||||
moduleType: 3
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1 &6884068289341648401
|
--- !u!1 &6884068289341648401
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -795,7 +551,7 @@ GameObject:
|
|||||||
- component: {fileID: 5167617291018270}
|
- component: {fileID: 5167617291018270}
|
||||||
- component: {fileID: 582127618437854756}
|
- component: {fileID: 582127618437854756}
|
||||||
- component: {fileID: 302156863843409177}
|
- component: {fileID: 302156863843409177}
|
||||||
- component: {fileID: 1251155925191827369}
|
- component: {fileID: 8664118715040108722}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Buggy_Player
|
m_Name: Buggy_Player
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -823,7 +579,6 @@ Transform:
|
|||||||
- {fileID: 279644236469480577}
|
- {fileID: 279644236469480577}
|
||||||
- {fileID: 7863987729731623420}
|
- {fileID: 7863987729731623420}
|
||||||
- {fileID: 9114007139308049182}
|
- {fileID: 9114007139308049182}
|
||||||
- {fileID: 9194943108169963881}
|
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!54 &5167617291018270
|
--- !u!54 &5167617291018270
|
||||||
@ -912,7 +667,7 @@ MonoBehaviour:
|
|||||||
useSounds: 1
|
useSounds: 1
|
||||||
engineSound: {fileID: 2872479692476395633}
|
engineSound: {fileID: 2872479692476395633}
|
||||||
tireScreechSound: {fileID: 5164767240841886004}
|
tireScreechSound: {fileID: 5164767240841886004}
|
||||||
--- !u!114 &1251155925191827369
|
--- !u!114 &8664118715040108722
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@ -921,161 +676,21 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 6884068289341648401}
|
m_GameObject: {fileID: 6884068289341648401}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 23a901881a64d704fbdbdf8716ec0229, type: 3}
|
m_Script: {fileID: 11500000, guid: 5f00271deee9d014d92d5672e1fe2baa, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.VehicleDamageController
|
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Vehicles.BuggyWheelSetup
|
||||||
moduleHealth: []
|
frontLeftWheelName: F_L
|
||||||
spawnGraceTime: 1
|
frontRightWheelName: F_R
|
||||||
minCollisionSpeed: 11
|
rearLeftWheelName: B_L
|
||||||
collisionDamagePerSpeed: 4.5
|
rearRightWheelName: B_R
|
||||||
maxCollisionDamage: 95
|
frontLeftColliderName: WheelCollider_FL
|
||||||
collisionCooldown: 0.25
|
frontRightColliderName: WheelCollider_FR
|
||||||
minAirTimeForLandingDamage: 0.45
|
rearLeftColliderName: WheelCollider_RL
|
||||||
minLandingDownSpeed: 9
|
rearRightColliderName: WheelCollider_RR
|
||||||
landingDamagePerSpeed: 4
|
radiusMultiplier: 0.5
|
||||||
maxLandingDamage: 75
|
minimumRadius: 0.12
|
||||||
landingWheelDamageShare: 0.65
|
suspensionDistance: 0.28
|
||||||
landingBodyDamageShare: 0.35
|
wheelMass: 20
|
||||||
logDamage: 0
|
|
||||||
lastDamageDebug:
|
|
||||||
--- !u!1 &7144028055245717426
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 5036353294958251943}
|
|
||||||
- component: {fileID: 1424654091887393660}
|
|
||||||
- component: {fileID: 5944958387327624743}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_Body
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &5036353294958251943
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7144028055245717426}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -0.03496194, y: 0.68061024, z: 0.6465633}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 9194943108169963881}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!65 &1424654091887393660
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7144028055245717426}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 1.6176045, y: 1.1486375, z: 2.1729183}
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &5944958387327624743
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7144028055245717426}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 1251155925191827369}
|
|
||||||
moduleType: 0
|
|
||||||
damageMultiplier: 1
|
|
||||||
--- !u!1 &7584916029984392318
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 383979774159315010}
|
|
||||||
- component: {fileID: 488353336899379031}
|
|
||||||
- component: {fileID: 7381166954967654850}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_Engine
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &383979774159315010
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7584916029984392318}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.0027641654, y: 0.36941406, z: 2.2160401}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 9194943108169963881}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!65 &488353336899379031
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7584916029984392318}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 0.9705627, y: 0.8614781, z: 0.9360264}
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &7381166954967654850
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7584916029984392318}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 1251155925191827369}
|
|
||||||
moduleType: 1
|
|
||||||
damageMultiplier: 1.2
|
|
||||||
--- !u!1 &7631946534788984040
|
--- !u!1 &7631946534788984040
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1147,75 +762,6 @@ WheelCollider:
|
|||||||
m_LayerOverridePriority: 0
|
m_LayerOverridePriority: 0
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_ProvidesContacts: 0
|
m_ProvidesContacts: 0
|
||||||
--- !u!1 &8672086566250455480
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 6809863583008423600}
|
|
||||||
- component: {fileID: 718638615359961317}
|
|
||||||
- component: {fileID: 813588334617030112}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: DamageHitbox_RearRightWheel
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &6809863583008423600
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8672086566250455480}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.87719953, y: 0.2736943, z: -0.42227113}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 9194943108169963881}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!135 &718638615359961317
|
|
||||||
SphereCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8672086566250455480}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Radius: 0.51565677
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &813588334617030112
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8672086566250455480}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 18014f9b0dee6a9498473614a3e522d8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::RaceFields.Damage.VehicleDamage.DamageHitbox
|
|
||||||
damageController: {fileID: 1251155925191827369}
|
|
||||||
moduleType: 5
|
|
||||||
damageMultiplier: 1.1
|
|
||||||
--- !u!1001 &2782393766222725750
|
--- !u!1001 &2782393766222725750
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1540,30 +1086,10 @@ PrefabInstance:
|
|||||||
propertyPath: m_LocalEulerAnglesHint.z
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
value: 0
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: -6652725513331149018, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 2559ea3811cbaba40b8e47dadd6a7b9a, type: 2}
|
|
||||||
- target: {fileID: -4637639816175188393, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: 919132149155446097, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
- target: {fileID: 919132149155446097, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
value: Buggy_Model
|
value: Buggy_Model
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3106450020594354929, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: 3568648316528729963, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
- target: {fileID: 4460325758958146913, guid: 77247b62c3b41bf4d95ff56d18001c8e, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: b3e837478d85f9e4d804bf34d748b479, type: 2}
|
|
||||||
m_RemovedComponents: []
|
m_RemovedComponents: []
|
||||||
m_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
|
|||||||
@ -1,242 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1 &2619232887283984616
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1973944076214827591}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Muzzle
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &1973944076214827591
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2619232887283984616}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.13739058, y: 1.8283, z: 0.4653}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 7534708747585793477}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &4284098897898543534
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 7934938654016177134}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: pivot
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &7934938654016177134
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 4284098897898543534}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 7534708747585793477}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &6304765452993946667
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4132040617390652714}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: GameObject
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &4132040617390652714
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 6304765452993946667}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 7789081065401008525}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &7403242231905148394
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 3107816258632120782}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: GameObject
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &3107816258632120782
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7403242231905148394}
|
|
||||||
serializedVersion: 2
|
|
||||||
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_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 623600404198432679}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1001 &8005729781991361070
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 0}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 919132149155446097, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: MachineGun_prefab
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects:
|
|
||||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
insertIndex: 4
|
|
||||||
addedObject: {fileID: 7934938654016177134}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 1973944076214827591}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: -9006549272062162013, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 4132040617390652714}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: -1748125006957259383, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 3107816258632120782}
|
|
||||||
m_AddedComponents:
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 4293301573341011267}
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
--- !u!4 &623600404198432679 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -1748125006957259383, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8005729781991361070}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!1 &7195477887394346879 stripped
|
|
||||||
GameObject:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8005729781991361070}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!114 &4293301573341011267
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7195477887394346879}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: d3422cd562818d448a78afdc747d8166, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::MachineGunWeapon
|
|
||||||
aimPivot: {fileID: 7534708747585793477}
|
|
||||||
muzzle: {fileID: 1973944076214827591}
|
|
||||||
projectilePrefab: {fileID: 5767152562348033804, guid: b53989f2534110c459cbd05c3562861f, type: 3}
|
|
||||||
muzzleFlash: {fileID: 0}
|
|
||||||
targetSearchRadius: 80
|
|
||||||
targetHeightOffset: 1.1
|
|
||||||
aimTurnSpeed: 18
|
|
||||||
fireRate: 12
|
|
||||||
damagePerShot: 8
|
|
||||||
projectileSpeed: 70
|
|
||||||
projectileLifeTime: 2.5
|
|
||||||
spreadAngle: 1.2
|
|
||||||
--- !u!4 &7534708747585793477 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8005729781991361070}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!4 &7789081065401008525 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -9006549272062162013, guid: e10ef6ed1df1f9445b52c82622b4ad31, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8005729781991361070}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0b387817969384b45bb9bc5ceb9fb9e8
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3e661d7a89960a149a0041a0a0ccc044
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,39 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!84 &8400000
|
|
||||||
RenderTexture:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: RearViewMirror
|
|
||||||
m_ImageContentsHash:
|
|
||||||
serializedVersion: 2
|
|
||||||
Hash: 00000000000000000000000000000000
|
|
||||||
m_IsAlphaChannelOptional: 0
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Width: 512
|
|
||||||
m_Height: 192
|
|
||||||
m_AntiAliasing: 2
|
|
||||||
m_MipCount: -1
|
|
||||||
m_DepthStencilFormat: 90
|
|
||||||
m_ColorFormat: 4
|
|
||||||
m_MipMap: 0
|
|
||||||
m_GenerateMips: 1
|
|
||||||
m_SRGB: 1
|
|
||||||
m_UseDynamicScale: 0
|
|
||||||
m_UseDynamicScaleExplicit: 0
|
|
||||||
m_BindMS: 0
|
|
||||||
m_EnableCompatibleFormat: 1
|
|
||||||
m_EnableRandomWrite: 0
|
|
||||||
m_TextureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_FilterMode: 1
|
|
||||||
m_Aniso: 0
|
|
||||||
m_MipBias: 0
|
|
||||||
m_WrapU: 1
|
|
||||||
m_WrapV: 1
|
|
||||||
m_WrapW: 1
|
|
||||||
m_Dimension: 2
|
|
||||||
m_VolumeDepth: 1
|
|
||||||
m_ShadowSamplingMode: 2
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 50bdd4d765aea2146ad9c6ecff404b7e
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 8400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2a4579adec0226449b62f9ce4a0edd1b
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f71317cc2bc384141adf6b3ba7b14528
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
using RaceFields.Vehicles;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.CameraSystem
|
|
||||||
{
|
|
||||||
[RequireComponent(typeof(Camera))]
|
|
||||||
public sealed class RearViewMirrorCamera : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private Transform target;
|
|
||||||
[SerializeField] private bool autoFindTarget = true;
|
|
||||||
[SerializeField] private float targetSearchInterval = 0.35f;
|
|
||||||
[SerializeField] private Vector3 localOffset = new Vector3(0f, 2.1f, 0.6f);
|
|
||||||
[SerializeField] private float lookUpBias = 0.08f;
|
|
||||||
[SerializeField] private float positionLerp = 18f;
|
|
||||||
[SerializeField] private float rotationLerp = 18f;
|
|
||||||
|
|
||||||
private Camera mirrorCamera;
|
|
||||||
private float nextTargetSearchTime;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
mirrorCamera = GetComponent<Camera>();
|
|
||||||
mirrorCamera.enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LateUpdate()
|
|
||||||
{
|
|
||||||
ResolveTarget();
|
|
||||||
if (target == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Vector3 desiredPosition = target.TransformPoint(localOffset);
|
|
||||||
Vector3 lookDirection = -target.forward + Vector3.up * lookUpBias;
|
|
||||||
Quaternion desiredRotation = Quaternion.LookRotation(lookDirection.normalized, Vector3.up);
|
|
||||||
|
|
||||||
float positionStep = 1f - Mathf.Exp(-positionLerp * Time.deltaTime);
|
|
||||||
float rotationStep = 1f - Mathf.Exp(-rotationLerp * Time.deltaTime);
|
|
||||||
transform.position = Vector3.Lerp(transform.position, desiredPosition, positionStep);
|
|
||||||
transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, rotationStep);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetTarget(Transform newTarget, bool snap)
|
|
||||||
{
|
|
||||||
target = newTarget;
|
|
||||||
if (snap && target != null)
|
|
||||||
SnapToTarget();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SnapToTarget()
|
|
||||||
{
|
|
||||||
transform.position = target.TransformPoint(localOffset);
|
|
||||||
Vector3 lookDirection = -target.forward + Vector3.up * lookUpBias;
|
|
||||||
transform.rotation = Quaternion.LookRotation(lookDirection.normalized, Vector3.up);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResolveTarget()
|
|
||||||
{
|
|
||||||
if (target != null || !autoFindTarget)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (Time.unscaledTime < nextTargetSearchTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nextTargetSearchTime = Time.unscaledTime + targetSearchInterval;
|
|
||||||
ArcadeBuggyController controller = Object.FindFirstObjectByType<ArcadeBuggyController>();
|
|
||||||
if (controller != null)
|
|
||||||
SetTarget(controller.transform, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b009635d9fed79946bb577254278da61
|
|
||||||
@ -12,10 +12,8 @@ namespace RaceFields.CameraSystem
|
|||||||
[SerializeField] private float positionSmoothTime = 0.12f;
|
[SerializeField] private float positionSmoothTime = 0.12f;
|
||||||
[SerializeField] private float rotationLerp = 12f;
|
[SerializeField] private float rotationLerp = 12f;
|
||||||
[SerializeField] private bool autoFindTarget = true;
|
[SerializeField] private bool autoFindTarget = true;
|
||||||
[SerializeField] private float targetSearchInterval = 0.25f;
|
|
||||||
|
|
||||||
private Vector3 velocity;
|
private Vector3 velocity;
|
||||||
private float nextTargetSearchTime;
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
@ -49,24 +47,11 @@ namespace RaceFields.CameraSystem
|
|||||||
velocity = Vector3.zero;
|
velocity = Vector3.zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetTarget(Transform newTarget, bool snap)
|
|
||||||
{
|
|
||||||
target = newTarget;
|
|
||||||
velocity = Vector3.zero;
|
|
||||||
|
|
||||||
if (snap)
|
|
||||||
SnapToTarget();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResolveTarget()
|
private void ResolveTarget()
|
||||||
{
|
{
|
||||||
if (target != null || !autoFindTarget)
|
if (target != null || !autoFindTarget)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Time.unscaledTime < nextTargetSearchTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nextTargetSearchTime = Time.unscaledTime + targetSearchInterval;
|
|
||||||
ArcadeBuggyController controller = Object.FindFirstObjectByType<ArcadeBuggyController>();
|
ArcadeBuggyController controller = Object.FindFirstObjectByType<ArcadeBuggyController>();
|
||||||
if (controller != null)
|
if (controller != null)
|
||||||
target = controller.transform;
|
target = controller.transform;
|
||||||
|
|||||||
@ -1,41 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using RaceFields.Damage.VehicleDamage;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Damage
|
|
||||||
{
|
|
||||||
public sealed class BladeDamageSource : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private float damagePerSecond = 80f;
|
|
||||||
[SerializeField] private float tickInterval = 0.2f;
|
|
||||||
[SerializeField] private float activationDelay = 0.75f;
|
|
||||||
|
|
||||||
private readonly Dictionary<DamageHitbox, float> nextDamageTimes = new Dictionary<DamageHitbox, float>();
|
|
||||||
private float activeAtTime;
|
|
||||||
|
|
||||||
private void OnEnable()
|
|
||||||
{
|
|
||||||
activeAtTime = Time.time + activationDelay;
|
|
||||||
nextDamageTimes.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnTriggerStay(Collider other)
|
|
||||||
{
|
|
||||||
if (Time.time < activeAtTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DamageHitbox hitbox = other.GetComponentInParent<DamageHitbox>();
|
|
||||||
if (hitbox == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float time = Time.time;
|
|
||||||
if (nextDamageTimes.TryGetValue(hitbox, out float nextTime) && time < nextTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nextDamageTimes[hitbox] = time + tickInterval;
|
|
||||||
Vector3 direction = (other.transform.position - transform.position).normalized;
|
|
||||||
float damage = damagePerSecond * tickInterval;
|
|
||||||
hitbox.ApplyDamage(new DamageHit(damage, DamageType.Blade, other.ClosestPoint(transform.position), direction, gameObject));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 5483916f7ebff2c448991626172509ea
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
using RaceFields.Damage.VehicleDamage;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Damage
|
|
||||||
{
|
|
||||||
[RequireComponent(typeof(Rigidbody))]
|
|
||||||
public sealed class CollisionDamageSource : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private float minRelativeSpeed = 7f;
|
|
||||||
[SerializeField] private float damagePerSpeed = 4f;
|
|
||||||
[SerializeField] private float maxDamage = 85f;
|
|
||||||
[SerializeField] private DamageType damageType = DamageType.Collision;
|
|
||||||
|
|
||||||
private void OnCollisionEnter(Collision collision)
|
|
||||||
{
|
|
||||||
float relativeSpeed = collision.relativeVelocity.magnitude;
|
|
||||||
if (relativeSpeed < minRelativeSpeed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DamageHitbox hitbox = collision.collider.GetComponentInParent<DamageHitbox>();
|
|
||||||
if (hitbox == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ContactPoint contact = collision.GetContact(0);
|
|
||||||
float amount = Mathf.Min(maxDamage, (relativeSpeed - minRelativeSpeed) * damagePerSpeed);
|
|
||||||
hitbox.ApplyDamage(new DamageHit(amount, damageType, contact.point, collision.relativeVelocity.normalized, gameObject));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 27d1127628814c242afa8c0cafd1d278
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
namespace RaceFields.Damage
|
|
||||||
{
|
|
||||||
public enum DamageType
|
|
||||||
{
|
|
||||||
Collision,
|
|
||||||
Blade,
|
|
||||||
Projectile,
|
|
||||||
Debug
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum VehicleModuleType
|
|
||||||
{
|
|
||||||
Body,
|
|
||||||
Engine,
|
|
||||||
FrontLeftWheel,
|
|
||||||
FrontRightWheel,
|
|
||||||
RearLeftWheel,
|
|
||||||
RearRightWheel
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum VehicleModuleState
|
|
||||||
{
|
|
||||||
Healthy,
|
|
||||||
Damaged,
|
|
||||||
Destroyed,
|
|
||||||
Detached
|
|
||||||
}
|
|
||||||
|
|
||||||
public readonly struct DamageHit
|
|
||||||
{
|
|
||||||
public readonly float Amount;
|
|
||||||
public readonly DamageType Type;
|
|
||||||
public readonly UnityEngine.Vector3 Point;
|
|
||||||
public readonly UnityEngine.Vector3 Direction;
|
|
||||||
public readonly UnityEngine.GameObject Source;
|
|
||||||
|
|
||||||
public DamageHit(float amount, DamageType type, UnityEngine.Vector3 point, UnityEngine.Vector3 direction, UnityEngine.GameObject source)
|
|
||||||
{
|
|
||||||
Amount = amount;
|
|
||||||
Type = type;
|
|
||||||
Point = point;
|
|
||||||
Direction = direction;
|
|
||||||
Source = source;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: afdd389aa3e96af428bc9a2dc1a28b50
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Damage
|
|
||||||
{
|
|
||||||
public sealed class SimpleDamageReceiver : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private float maxHealth = 100f;
|
|
||||||
[SerializeField] private bool destroyOnDeath = true;
|
|
||||||
[SerializeField] private float destroyDelay;
|
|
||||||
|
|
||||||
public float CurrentHealth { get; private set; }
|
|
||||||
public bool IsDead { get; private set; }
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
CurrentHealth = Mathf.Max(1f, maxHealth);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ApplyDamage(float amount, Vector3 point, Vector3 direction, GameObject source)
|
|
||||||
{
|
|
||||||
if (IsDead)
|
|
||||||
return;
|
|
||||||
|
|
||||||
CurrentHealth = Mathf.Max(0f, CurrentHealth - Mathf.Max(0f, amount));
|
|
||||||
if (CurrentHealth > 0f)
|
|
||||||
return;
|
|
||||||
|
|
||||||
IsDead = true;
|
|
||||||
if (destroyOnDeath)
|
|
||||||
Destroy(gameObject, destroyDelay);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b84a36537942ca148a8bc4a133d96e93
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Damage.VehicleDamage
|
|
||||||
{
|
|
||||||
public sealed class DamageHitbox : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private VehicleDamageController damageController;
|
|
||||||
[SerializeField] private VehicleModuleType moduleType = VehicleModuleType.Body;
|
|
||||||
[SerializeField] private float damageMultiplier = 1f;
|
|
||||||
|
|
||||||
public VehicleModuleType ModuleType => moduleType;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
if (damageController == null)
|
|
||||||
damageController = GetComponentInParent<VehicleDamageController>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ApplyDamage(DamageHit hit)
|
|
||||||
{
|
|
||||||
if (damageController == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DamageHit scaledHit = new DamageHit(hit.Amount * damageMultiplier, hit.Type, hit.Point, hit.Direction, hit.Source);
|
|
||||||
damageController.ApplyDamage(moduleType, scaledHit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 18014f9b0dee6a9498473614a3e522d8
|
|
||||||
@ -1,384 +0,0 @@
|
|||||||
using System;
|
|
||||||
using RaceFields.Vehicles;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Damage.VehicleDamage
|
|
||||||
{
|
|
||||||
[RequireComponent(typeof(Rigidbody))]
|
|
||||||
[RequireComponent(typeof(ArcadeBuggyController))]
|
|
||||||
public sealed class VehicleDamageController : MonoBehaviour
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public sealed class VehicleModule
|
|
||||||
{
|
|
||||||
[SerializeField] private VehicleModuleType moduleType = VehicleModuleType.Body;
|
|
||||||
[SerializeField] private string displayName = "Module";
|
|
||||||
[SerializeField] private float maxHealth = 100f;
|
|
||||||
[SerializeField, Range(0f, 1f)] private float damagedHealthRatio = 0.5f;
|
|
||||||
[SerializeField] private WheelSlot wheelSlot;
|
|
||||||
[SerializeField] private bool detachWheelVisualOnDestroyed;
|
|
||||||
[SerializeField] private float detachImpulse = 2f;
|
|
||||||
[SerializeField] private float currentHealth;
|
|
||||||
[SerializeField] private VehicleModuleState state = VehicleModuleState.Healthy;
|
|
||||||
|
|
||||||
public VehicleModuleType ModuleType => moduleType;
|
|
||||||
public string DisplayName => displayName;
|
|
||||||
public float MaxHealth => maxHealth;
|
|
||||||
public float CurrentHealth => currentHealth;
|
|
||||||
public VehicleModuleState State => state;
|
|
||||||
public WheelSlot WheelSlot => wheelSlot;
|
|
||||||
public bool DetachWheelVisualOnDestroyed => detachWheelVisualOnDestroyed;
|
|
||||||
public float DetachImpulse => detachImpulse;
|
|
||||||
public float NormalizedHealth => maxHealth <= 0f ? 0f : Mathf.Clamp01(currentHealth / maxHealth);
|
|
||||||
|
|
||||||
public VehicleModule(VehicleModuleType moduleType, string displayName, float maxHealth)
|
|
||||||
{
|
|
||||||
this.moduleType = moduleType;
|
|
||||||
this.displayName = displayName;
|
|
||||||
this.maxHealth = maxHealth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public VehicleModule WithWheel(WheelSlot slot, bool detachVisual)
|
|
||||||
{
|
|
||||||
wheelSlot = slot;
|
|
||||||
detachWheelVisualOnDestroyed = detachVisual;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResetHealth()
|
|
||||||
{
|
|
||||||
currentHealth = Mathf.Max(1f, maxHealth);
|
|
||||||
state = VehicleModuleState.Healthy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ApplyDamage(float amount)
|
|
||||||
{
|
|
||||||
if (state == VehicleModuleState.Destroyed || state == VehicleModuleState.Detached)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
VehicleModuleState previous = state;
|
|
||||||
currentHealth = Mathf.Max(0f, currentHealth - Mathf.Max(0f, amount));
|
|
||||||
state = ResolveState();
|
|
||||||
return previous != state;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void MarkDetached()
|
|
||||||
{
|
|
||||||
currentHealth = 0f;
|
|
||||||
state = VehicleModuleState.Detached;
|
|
||||||
}
|
|
||||||
|
|
||||||
private VehicleModuleState ResolveState()
|
|
||||||
{
|
|
||||||
if (currentHealth <= 0f)
|
|
||||||
return VehicleModuleState.Destroyed;
|
|
||||||
|
|
||||||
return NormalizedHealth <= damagedHealthRatio
|
|
||||||
? VehicleModuleState.Damaged
|
|
||||||
: VehicleModuleState.Healthy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Header("Modules")]
|
|
||||||
[SerializeField] private VehicleModule[] moduleHealth;
|
|
||||||
|
|
||||||
[Header("Startup")]
|
|
||||||
[SerializeField] private float spawnGraceTime = 1f;
|
|
||||||
|
|
||||||
[Header("Collision Damage")]
|
|
||||||
[SerializeField] private float minCollisionSpeed = 11f;
|
|
||||||
[SerializeField] private float collisionDamagePerSpeed = 4.5f;
|
|
||||||
[SerializeField] private float maxCollisionDamage = 95f;
|
|
||||||
[SerializeField] private float collisionCooldown = 0.25f;
|
|
||||||
|
|
||||||
[Header("Landing Damage")]
|
|
||||||
[SerializeField] private float minAirTimeForLandingDamage = 0.45f;
|
|
||||||
[SerializeField] private float minLandingDownSpeed = 9f;
|
|
||||||
[SerializeField] private float landingDamagePerSpeed = 4f;
|
|
||||||
[SerializeField] private float maxLandingDamage = 75f;
|
|
||||||
[SerializeField, Range(0f, 1f)] private float landingWheelDamageShare = 0.65f;
|
|
||||||
[SerializeField, Range(0f, 1f)] private float landingBodyDamageShare = 0.35f;
|
|
||||||
|
|
||||||
[Header("Debug")]
|
|
||||||
[SerializeField] private bool logDamage;
|
|
||||||
[SerializeField] private string lastDamageDebug;
|
|
||||||
|
|
||||||
public event Action<VehicleModule> ModuleStateChanged;
|
|
||||||
|
|
||||||
public VehicleModule[] Modules => moduleHealth;
|
|
||||||
public string LastDamageDebug => lastDamageDebug;
|
|
||||||
|
|
||||||
private ArcadeBuggyController buggyController;
|
|
||||||
private Rigidbody body;
|
|
||||||
private float ignoreDamageUntil;
|
|
||||||
private float nextCollisionDamageTime;
|
|
||||||
private WheelImpactState frontLeftState;
|
|
||||||
private WheelImpactState frontRightState;
|
|
||||||
private WheelImpactState rearLeftState;
|
|
||||||
private WheelImpactState rearRightState;
|
|
||||||
|
|
||||||
private struct WheelImpactState
|
|
||||||
{
|
|
||||||
public bool WasGrounded;
|
|
||||||
public float AirborneStartTime;
|
|
||||||
public float MaxDownSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Reset()
|
|
||||||
{
|
|
||||||
moduleHealth = CreateDefaultModules();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
buggyController = GetComponent<ArcadeBuggyController>();
|
|
||||||
body = GetComponent<Rigidbody>();
|
|
||||||
EnsureModules();
|
|
||||||
ResetModuleHealth();
|
|
||||||
ignoreDamageUntil = Time.time + spawnGraceTime;
|
|
||||||
frontLeftState.WasGrounded = true;
|
|
||||||
frontRightState.WasGrounded = true;
|
|
||||||
rearLeftState.WasGrounded = true;
|
|
||||||
rearRightState.WasGrounded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FixedUpdate()
|
|
||||||
{
|
|
||||||
if (Time.time < ignoreDamageUntil)
|
|
||||||
return;
|
|
||||||
|
|
||||||
UpdateWheelLanding(WheelSlot.FrontLeft, VehicleModuleType.FrontLeftWheel, ref frontLeftState);
|
|
||||||
UpdateWheelLanding(WheelSlot.FrontRight, VehicleModuleType.FrontRightWheel, ref frontRightState);
|
|
||||||
UpdateWheelLanding(WheelSlot.RearLeft, VehicleModuleType.RearLeftWheel, ref rearLeftState);
|
|
||||||
UpdateWheelLanding(WheelSlot.RearRight, VehicleModuleType.RearRightWheel, ref rearRightState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnCollisionEnter(Collision collision)
|
|
||||||
{
|
|
||||||
if (Time.time < ignoreDamageUntil || Time.time < nextCollisionDamageTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (collision.contactCount == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ContactPoint contact = collision.GetContact(0);
|
|
||||||
float impactSpeed = Mathf.Abs(Vector3.Dot(collision.relativeVelocity, contact.normal));
|
|
||||||
if (impactSpeed < minCollisionSpeed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
VehicleModuleType moduleType = ResolveImpactModule(contact.point);
|
|
||||||
float damage = Mathf.Min(maxCollisionDamage, (impactSpeed - minCollisionSpeed) * collisionDamagePerSpeed);
|
|
||||||
ApplyDamage(moduleType, new DamageHit(damage, DamageType.Collision, contact.point, collision.relativeVelocity.normalized, gameObject));
|
|
||||||
nextCollisionDamageTime = Time.time + collisionCooldown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ApplyDamage(VehicleModuleType moduleType, DamageHit hit)
|
|
||||||
{
|
|
||||||
VehicleModule module = GetModule(moduleType);
|
|
||||||
if (module == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
bool changed = module.ApplyDamage(hit.Amount);
|
|
||||||
lastDamageDebug = $"{hit.Type}: {hit.Amount:F1} -> {moduleType}";
|
|
||||||
|
|
||||||
if (module.State == VehicleModuleState.Destroyed && IsWheelModule(module.ModuleType))
|
|
||||||
DisableDestroyedWheel(module);
|
|
||||||
|
|
||||||
if (logDamage)
|
|
||||||
Debug.Log($"{name} {lastDamageDebug}", this);
|
|
||||||
|
|
||||||
if (changed)
|
|
||||||
ModuleStateChanged?.Invoke(module);
|
|
||||||
}
|
|
||||||
|
|
||||||
public VehicleModule GetModule(VehicleModuleType moduleType)
|
|
||||||
{
|
|
||||||
EnsureModules();
|
|
||||||
|
|
||||||
for (int i = 0; i < moduleHealth.Length; i++)
|
|
||||||
{
|
|
||||||
if (moduleHealth[i] != null && moduleHealth[i].ModuleType == moduleType)
|
|
||||||
return moduleHealth[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public VehicleModuleState GetModuleState(VehicleModuleType moduleType)
|
|
||||||
{
|
|
||||||
VehicleModule module = GetModule(moduleType);
|
|
||||||
return module != null ? module.State : VehicleModuleState.Healthy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RepairAll()
|
|
||||||
{
|
|
||||||
EnsureModules();
|
|
||||||
|
|
||||||
for (int i = 0; i < moduleHealth.Length; i++)
|
|
||||||
{
|
|
||||||
if (moduleHealth[i] == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
moduleHealth[i].ResetHealth();
|
|
||||||
ModuleStateChanged?.Invoke(moduleHealth[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateWheelLanding(WheelSlot slot, VehicleModuleType moduleType, ref WheelImpactState state)
|
|
||||||
{
|
|
||||||
WheelCollider wheel = buggyController.GetWheelCollider(slot);
|
|
||||||
if (wheel == null || !wheel.enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
bool grounded = wheel.isGrounded;
|
|
||||||
if (!grounded)
|
|
||||||
{
|
|
||||||
if (state.WasGrounded)
|
|
||||||
{
|
|
||||||
state.AirborneStartTime = Time.time;
|
|
||||||
state.MaxDownSpeed = 0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
state.WasGrounded = false;
|
|
||||||
Vector3 gravityDirection = Physics.gravity.sqrMagnitude > 0f ? -Physics.gravity.normalized : Vector3.down;
|
|
||||||
float downSpeed = Vector3.Dot(body.GetPointVelocity(wheel.transform.position), gravityDirection);
|
|
||||||
state.MaxDownSpeed = Mathf.Max(state.MaxDownSpeed, Mathf.Max(0f, downSpeed));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (state.WasGrounded)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float airTime = Time.time - state.AirborneStartTime;
|
|
||||||
float maxDownSpeed = state.MaxDownSpeed;
|
|
||||||
state.WasGrounded = true;
|
|
||||||
state.AirborneStartTime = 0f;
|
|
||||||
state.MaxDownSpeed = 0f;
|
|
||||||
|
|
||||||
if (airTime < minAirTimeForLandingDamage || maxDownSpeed < minLandingDownSpeed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float totalDamage = Mathf.Min(maxLandingDamage, (maxDownSpeed - minLandingDownSpeed) * landingDamagePerSpeed);
|
|
||||||
ApplyDamage(moduleType, new DamageHit(totalDamage * landingWheelDamageShare, DamageType.Collision, wheel.transform.position, Vector3.down, gameObject));
|
|
||||||
|
|
||||||
float bodyDamage = totalDamage * landingBodyDamageShare * 0.25f;
|
|
||||||
if (bodyDamage > 0f)
|
|
||||||
ApplyDamage(VehicleModuleType.Body, new DamageHit(bodyDamage, DamageType.Collision, wheel.transform.position, Vector3.down, gameObject));
|
|
||||||
}
|
|
||||||
|
|
||||||
private VehicleModuleType ResolveImpactModule(Vector3 worldPoint)
|
|
||||||
{
|
|
||||||
if (TryResolveWheelImpact(worldPoint, out WheelSlot closestWheel))
|
|
||||||
return WheelSlotToModule(closestWheel);
|
|
||||||
|
|
||||||
Vector3 localPoint = transform.InverseTransformPoint(worldPoint);
|
|
||||||
return localPoint.z > 0.65f ? VehicleModuleType.Engine : VehicleModuleType.Body;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool TryResolveWheelImpact(Vector3 worldPoint, out WheelSlot closestWheel)
|
|
||||||
{
|
|
||||||
closestWheel = WheelSlot.FrontLeft;
|
|
||||||
float bestDistance = float.MaxValue;
|
|
||||||
bool found = false;
|
|
||||||
|
|
||||||
CheckWheelDistance(WheelSlot.FrontLeft, worldPoint, ref closestWheel, ref bestDistance, ref found);
|
|
||||||
CheckWheelDistance(WheelSlot.FrontRight, worldPoint, ref closestWheel, ref bestDistance, ref found);
|
|
||||||
CheckWheelDistance(WheelSlot.RearLeft, worldPoint, ref closestWheel, ref bestDistance, ref found);
|
|
||||||
CheckWheelDistance(WheelSlot.RearRight, worldPoint, ref closestWheel, ref bestDistance, ref found);
|
|
||||||
|
|
||||||
return found;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckWheelDistance(WheelSlot slot, Vector3 worldPoint, ref WheelSlot closestWheel, ref float bestDistance, ref bool found)
|
|
||||||
{
|
|
||||||
WheelCollider wheel = buggyController.GetWheelCollider(slot);
|
|
||||||
if (wheel == null || !wheel.enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float limit = Mathf.Max(0.45f, wheel.radius * 1.8f);
|
|
||||||
float distance = Vector3.Distance(worldPoint, wheel.transform.position);
|
|
||||||
if (distance > limit || distance >= bestDistance)
|
|
||||||
return;
|
|
||||||
|
|
||||||
closestWheel = slot;
|
|
||||||
bestDistance = distance;
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DisableDestroyedWheel(VehicleModule module)
|
|
||||||
{
|
|
||||||
buggyController.SetWheelEnabled(module.WheelSlot, false);
|
|
||||||
|
|
||||||
if (!module.DetachWheelVisualOnDestroyed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Transform visual = buggyController.GetWheelVisual(module.WheelSlot);
|
|
||||||
if (visual == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
visual.SetParent(null, true);
|
|
||||||
|
|
||||||
Collider wheelCollider = visual.GetComponent<Collider>();
|
|
||||||
if (wheelCollider == null)
|
|
||||||
wheelCollider = visual.gameObject.AddComponent<SphereCollider>();
|
|
||||||
|
|
||||||
Rigidbody wheelBody = visual.GetComponent<Rigidbody>();
|
|
||||||
if (wheelBody == null)
|
|
||||||
wheelBody = visual.gameObject.AddComponent<Rigidbody>();
|
|
||||||
|
|
||||||
wheelBody.mass = 18f;
|
|
||||||
wheelBody.interpolation = RigidbodyInterpolation.Interpolate;
|
|
||||||
wheelBody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
|
|
||||||
wheelBody.AddForce((visual.right + Vector3.up * 0.35f) * module.DetachImpulse, ForceMode.Impulse);
|
|
||||||
module.MarkDetached();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void EnsureModules()
|
|
||||||
{
|
|
||||||
if (moduleHealth == null || moduleHealth.Length == 0)
|
|
||||||
moduleHealth = CreateDefaultModules();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResetModuleHealth()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < moduleHealth.Length; i++)
|
|
||||||
{
|
|
||||||
if (moduleHealth[i] != null)
|
|
||||||
moduleHealth[i].ResetHealth();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static VehicleModule[] CreateDefaultModules()
|
|
||||||
{
|
|
||||||
return new[]
|
|
||||||
{
|
|
||||||
new VehicleModule(VehicleModuleType.Body, "Body", 180f),
|
|
||||||
new VehicleModule(VehicleModuleType.Engine, "Engine", 120f),
|
|
||||||
new VehicleModule(VehicleModuleType.FrontLeftWheel, "Front Left Wheel", 70f).WithWheel(WheelSlot.FrontLeft, true),
|
|
||||||
new VehicleModule(VehicleModuleType.FrontRightWheel, "Front Right Wheel", 70f).WithWheel(WheelSlot.FrontRight, true),
|
|
||||||
new VehicleModule(VehicleModuleType.RearLeftWheel, "Rear Left Wheel", 70f).WithWheel(WheelSlot.RearLeft, true),
|
|
||||||
new VehicleModule(VehicleModuleType.RearRightWheel, "Rear Right Wheel", 70f).WithWheel(WheelSlot.RearRight, true)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsWheelModule(VehicleModuleType moduleType)
|
|
||||||
{
|
|
||||||
return moduleType == VehicleModuleType.FrontLeftWheel ||
|
|
||||||
moduleType == VehicleModuleType.FrontRightWheel ||
|
|
||||||
moduleType == VehicleModuleType.RearLeftWheel ||
|
|
||||||
moduleType == VehicleModuleType.RearRightWheel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static VehicleModuleType WheelSlotToModule(WheelSlot slot)
|
|
||||||
{
|
|
||||||
return slot switch
|
|
||||||
{
|
|
||||||
WheelSlot.FrontLeft => VehicleModuleType.FrontLeftWheel,
|
|
||||||
WheelSlot.FrontRight => VehicleModuleType.FrontRightWheel,
|
|
||||||
WheelSlot.RearLeft => VehicleModuleType.RearLeftWheel,
|
|
||||||
WheelSlot.RearRight => VehicleModuleType.RearRightWheel,
|
|
||||||
_ => VehicleModuleType.Body
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 23a901881a64d704fbdbdf8716ec0229
|
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using RaceFields.CameraSystem;
|
using RaceFields.CameraSystem;
|
||||||
using RaceFields.Damage.VehicleDamage;
|
|
||||||
using RaceFields.Vehicles;
|
using RaceFields.Vehicles;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -25,7 +24,7 @@ namespace RaceFields.EditorTools
|
|||||||
EnsureComponent<Rigidbody>(root, ConfigureBody);
|
EnsureComponent<Rigidbody>(root, ConfigureBody);
|
||||||
EnsureComponent<BoxCollider>(root, collider => ConfigureBodyCollider(root, collider));
|
EnsureComponent<BoxCollider>(root, collider => ConfigureBodyCollider(root, collider));
|
||||||
ArcadeBuggyController controller = EnsureComponent<ArcadeBuggyController>(root, null);
|
ArcadeBuggyController controller = EnsureComponent<ArcadeBuggyController>(root, null);
|
||||||
EnsureComponent<VehicleDamageController>(root, null);
|
BuggyWheelSetup wheelSetup = EnsureComponent<BuggyWheelSetup>(root, ConfigureWheelSetup);
|
||||||
|
|
||||||
SetupWheel(root.transform, "Wheel_FL", "WheelCollider_FL");
|
SetupWheel(root.transform, "Wheel_FL", "WheelCollider_FL");
|
||||||
SetupWheel(root.transform, "Wheel_FR", "WheelCollider_FR");
|
SetupWheel(root.transform, "Wheel_FR", "WheelCollider_FR");
|
||||||
@ -35,6 +34,8 @@ namespace RaceFields.EditorTools
|
|||||||
SetupEffects(root.transform, controller);
|
SetupEffects(root.transform, controller);
|
||||||
SetupSounds(root.transform, controller);
|
SetupSounds(root.transform, controller);
|
||||||
|
|
||||||
|
wheelSetup.AlignAllWheels();
|
||||||
|
|
||||||
PrefabUtility.SaveAsPrefabAsset(root, BuggyPrefabPath);
|
PrefabUtility.SaveAsPrefabAsset(root, BuggyPrefabPath);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -171,6 +172,20 @@ namespace RaceFields.EditorTools
|
|||||||
wheelCollider.suspensionSpring = spring;
|
wheelCollider.suspensionSpring = spring;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void ConfigureWheelSetup(BuggyWheelSetup setup)
|
||||||
|
{
|
||||||
|
SerializedObject serializedSetup = new SerializedObject(setup);
|
||||||
|
serializedSetup.FindProperty("frontLeftWheelName").stringValue = "Wheel_FL";
|
||||||
|
serializedSetup.FindProperty("frontRightWheelName").stringValue = "Wheel_FR";
|
||||||
|
serializedSetup.FindProperty("rearLeftWheelName").stringValue = "Wheel_RL";
|
||||||
|
serializedSetup.FindProperty("rearRightWheelName").stringValue = "Wheel_RR";
|
||||||
|
serializedSetup.FindProperty("frontLeftColliderName").stringValue = "WheelCollider_FL";
|
||||||
|
serializedSetup.FindProperty("frontRightColliderName").stringValue = "WheelCollider_FR";
|
||||||
|
serializedSetup.FindProperty("rearLeftColliderName").stringValue = "WheelCollider_RL";
|
||||||
|
serializedSetup.FindProperty("rearRightColliderName").stringValue = "WheelCollider_RR";
|
||||||
|
serializedSetup.ApplyModifiedPropertiesWithoutUndo();
|
||||||
|
}
|
||||||
|
|
||||||
private static void SetupControllerReferences(Transform root, ArcadeBuggyController controller)
|
private static void SetupControllerReferences(Transform root, ArcadeBuggyController controller)
|
||||||
{
|
{
|
||||||
SerializedObject serializedController = new SerializedObject(controller);
|
SerializedObject serializedController = new SerializedObject(controller);
|
||||||
|
|||||||
@ -1,26 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.GameFlow
|
|
||||||
{
|
|
||||||
public enum SelectedGameMode
|
|
||||||
{
|
|
||||||
Arena,
|
|
||||||
SurvivalRace
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class GameSelectionState
|
|
||||||
{
|
|
||||||
public static GameObject VehiclePrefab { get; private set; }
|
|
||||||
public static string VehicleName { get; private set; }
|
|
||||||
public static SelectedGameMode GameMode { get; private set; }
|
|
||||||
public static string MapSceneName { get; private set; }
|
|
||||||
|
|
||||||
public static void SetSelection(GameObject vehiclePrefab, string vehicleName, SelectedGameMode gameMode, string mapSceneName)
|
|
||||||
{
|
|
||||||
VehiclePrefab = vehiclePrefab;
|
|
||||||
VehicleName = vehicleName;
|
|
||||||
GameMode = gameMode;
|
|
||||||
MapSceneName = mapSceneName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3fae561f4c80ba7459a48addd977d04d
|
|
||||||
@ -1,62 +0,0 @@
|
|||||||
using RaceFields.CameraSystem;
|
|
||||||
using RaceFields.Damage.VehicleDamage;
|
|
||||||
using RaceFields.UI.HUD;
|
|
||||||
using RaceFields.Vehicles;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.GameFlow
|
|
||||||
{
|
|
||||||
public sealed class SelectedVehicleSpawner : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private Transform spawnPoint;
|
|
||||||
[SerializeField] private GameObject fallbackVehiclePrefab;
|
|
||||||
[SerializeField] private bool destroyExistingVehicles = true;
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
GameObject prefab = GameSelectionState.VehiclePrefab != null ? GameSelectionState.VehiclePrefab : fallbackVehiclePrefab;
|
|
||||||
if (prefab == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (destroyExistingVehicles)
|
|
||||||
DestroyExistingVehicleControllers();
|
|
||||||
|
|
||||||
Transform targetSpawn = spawnPoint != null ? spawnPoint : transform;
|
|
||||||
GameObject vehicle = Instantiate(prefab, targetSpawn.position, targetSpawn.rotation);
|
|
||||||
AssignCameraTarget(vehicle.transform);
|
|
||||||
AssignDamageHud(vehicle);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void AssignCameraTarget(Transform vehicle)
|
|
||||||
{
|
|
||||||
BuggyFollowCamera followCamera = FindAnyObjectByType<BuggyFollowCamera>();
|
|
||||||
if (followCamera != null)
|
|
||||||
followCamera.SetTarget(vehicle, true);
|
|
||||||
|
|
||||||
RearViewMirrorCamera rearViewCamera = FindAnyObjectByType<RearViewMirrorCamera>();
|
|
||||||
if (rearViewCamera != null)
|
|
||||||
rearViewCamera.SetTarget(vehicle, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void AssignDamageHud(GameObject vehicle)
|
|
||||||
{
|
|
||||||
VehicleDamageController damageController = vehicle.GetComponentInChildren<VehicleDamageController>();
|
|
||||||
if (damageController == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
VehicleDamageHud damageHud = FindAnyObjectByType<VehicleDamageHud>();
|
|
||||||
if (damageHud != null)
|
|
||||||
damageHud.Bind(damageController);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void DestroyExistingVehicleControllers()
|
|
||||||
{
|
|
||||||
ArcadeBuggyController[] existingVehicles = FindObjectsByType<ArcadeBuggyController>(FindObjectsInactive.Exclude);
|
|
||||||
for (int i = 0; i < existingVehicles.Length; i++)
|
|
||||||
{
|
|
||||||
if (existingVehicles[i] != null)
|
|
||||||
Destroy(existingVehicles[i].gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 387521603e66df147a3042280acf4f66
|
|
||||||
@ -1,384 +0,0 @@
|
|||||||
using System;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
#if ENABLE_INPUT_SYSTEM
|
|
||||||
using UnityEngine.InputSystem;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace RaceFields.GameFlow
|
|
||||||
{
|
|
||||||
public sealed class SelectionMenuController : MonoBehaviour
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public sealed class VehicleOption
|
|
||||||
{
|
|
||||||
public string displayName = "BUGGY";
|
|
||||||
public GameObject prefab;
|
|
||||||
public Vector3 previewRotation = new Vector3(0f, 145f, 0f);
|
|
||||||
public float previewScale = 1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public sealed class MapOption
|
|
||||||
{
|
|
||||||
public string displayName = "DEMO SCENE";
|
|
||||||
public string sceneName = "Demo Scene";
|
|
||||||
public SelectedGameMode mode = SelectedGameMode.Arena;
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum Step
|
|
||||||
{
|
|
||||||
Vehicle,
|
|
||||||
Mode,
|
|
||||||
Map
|
|
||||||
}
|
|
||||||
|
|
||||||
[Header("Content")]
|
|
||||||
[SerializeField] private VehicleOption[] vehicles;
|
|
||||||
[SerializeField] private MapOption[] maps;
|
|
||||||
|
|
||||||
[Header("Preview")]
|
|
||||||
[SerializeField] private Transform previewRoot;
|
|
||||||
[SerializeField] private float previewRotationSpeed = 28f;
|
|
||||||
|
|
||||||
[Header("Panels")]
|
|
||||||
[SerializeField] private GameObject vehiclePanel;
|
|
||||||
[SerializeField] private GameObject modePanel;
|
|
||||||
[SerializeField] private GameObject mapPanel;
|
|
||||||
|
|
||||||
[Header("Texts")]
|
|
||||||
[SerializeField] private Text titleText;
|
|
||||||
[SerializeField] private Text subtitleText;
|
|
||||||
[SerializeField] private Text vehicleNameText;
|
|
||||||
[SerializeField] private Text vehicleClassText;
|
|
||||||
[SerializeField] private Text[] modeLabels;
|
|
||||||
[SerializeField] private Text[] mapLabels;
|
|
||||||
|
|
||||||
private readonly string[] modeNames =
|
|
||||||
{
|
|
||||||
"\u0410\u0420\u0415\u041d\u0410",
|
|
||||||
"\u0413\u041e\u041d\u041a\u0410 \u041d\u0410 \u0412\u042b\u0416\u0418\u0412\u0410\u041d\u0418\u0415"
|
|
||||||
};
|
|
||||||
|
|
||||||
private Step currentStep;
|
|
||||||
private GameObject currentPreview;
|
|
||||||
private int vehicleIndex;
|
|
||||||
private int modeIndex;
|
|
||||||
private int mapIndex;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
if (previewRoot == null)
|
|
||||||
previewRoot = transform;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
currentStep = Step.Vehicle;
|
|
||||||
ShowVehicle(vehicleIndex);
|
|
||||||
RefreshUi();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
RotatePreview();
|
|
||||||
HandleKeyboard();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SelectPrevious()
|
|
||||||
{
|
|
||||||
MoveSelection(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SelectNext()
|
|
||||||
{
|
|
||||||
MoveSelection(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Confirm()
|
|
||||||
{
|
|
||||||
if (currentStep == Step.Vehicle)
|
|
||||||
{
|
|
||||||
currentStep = Step.Mode;
|
|
||||||
RefreshUi();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentStep == Step.Mode)
|
|
||||||
{
|
|
||||||
mapIndex = 0;
|
|
||||||
currentStep = Step.Map;
|
|
||||||
RefreshUi();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
StartSelectedMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChooseArena()
|
|
||||||
{
|
|
||||||
modeIndex = 0;
|
|
||||||
mapIndex = 0;
|
|
||||||
currentStep = Step.Map;
|
|
||||||
RefreshUi();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChooseSurvivalRace()
|
|
||||||
{
|
|
||||||
modeIndex = 1;
|
|
||||||
mapIndex = 0;
|
|
||||||
currentStep = Step.Map;
|
|
||||||
RefreshUi();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChooseCurrentMap()
|
|
||||||
{
|
|
||||||
StartSelectedMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Back()
|
|
||||||
{
|
|
||||||
if (currentStep == Step.Map)
|
|
||||||
currentStep = Step.Mode;
|
|
||||||
else if (currentStep == Step.Mode)
|
|
||||||
currentStep = Step.Vehicle;
|
|
||||||
|
|
||||||
RefreshUi();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleKeyboard()
|
|
||||||
{
|
|
||||||
#if ENABLE_INPUT_SYSTEM
|
|
||||||
Keyboard keyboard = Keyboard.current;
|
|
||||||
if (keyboard == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (keyboard.leftArrowKey.wasPressedThisFrame || keyboard.aKey.wasPressedThisFrame)
|
|
||||||
SelectPrevious();
|
|
||||||
else if (keyboard.rightArrowKey.wasPressedThisFrame || keyboard.dKey.wasPressedThisFrame)
|
|
||||||
SelectNext();
|
|
||||||
|
|
||||||
if (keyboard.spaceKey.wasPressedThisFrame || keyboard.enterKey.wasPressedThisFrame || keyboard.numpadEnterKey.wasPressedThisFrame)
|
|
||||||
Confirm();
|
|
||||||
else if (keyboard.escapeKey.wasPressedThisFrame || keyboard.backspaceKey.wasPressedThisFrame)
|
|
||||||
Back();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MoveSelection(int direction)
|
|
||||||
{
|
|
||||||
if (currentStep == Step.Vehicle)
|
|
||||||
{
|
|
||||||
int length = vehicles != null ? vehicles.Length : 0;
|
|
||||||
vehicleIndex = Wrap(vehicleIndex + direction, length);
|
|
||||||
ShowVehicle(vehicleIndex);
|
|
||||||
}
|
|
||||||
else if (currentStep == Step.Mode)
|
|
||||||
{
|
|
||||||
modeIndex = Wrap(modeIndex + direction, modeNames.Length);
|
|
||||||
}
|
|
||||||
else if (currentStep == Step.Map)
|
|
||||||
{
|
|
||||||
int length = GetMapCountForCurrentMode();
|
|
||||||
mapIndex = Wrap(mapIndex + direction, length);
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshUi();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ShowVehicle(int index)
|
|
||||||
{
|
|
||||||
if (currentPreview != null)
|
|
||||||
Destroy(currentPreview);
|
|
||||||
|
|
||||||
if (vehicles == null || vehicles.Length == 0 || vehicles[index] == null || vehicles[index].prefab == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
VehicleOption option = vehicles[index];
|
|
||||||
currentPreview = Instantiate(option.prefab, previewRoot.position, Quaternion.Euler(option.previewRotation), previewRoot);
|
|
||||||
currentPreview.name = "Runtime Preview - " + option.displayName;
|
|
||||||
currentPreview.transform.localPosition = Vector3.zero;
|
|
||||||
currentPreview.transform.localRotation = Quaternion.Euler(option.previewRotation);
|
|
||||||
currentPreview.transform.localScale = Vector3.one * Mathf.Max(0.01f, option.previewScale);
|
|
||||||
DisableGameplayComponents(currentPreview);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DisableGameplayComponents(GameObject root)
|
|
||||||
{
|
|
||||||
Rigidbody[] bodies = root.GetComponentsInChildren<Rigidbody>(true);
|
|
||||||
for (int i = 0; i < bodies.Length; i++)
|
|
||||||
{
|
|
||||||
bodies[i].isKinematic = true;
|
|
||||||
bodies[i].useGravity = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Collider[] colliders = root.GetComponentsInChildren<Collider>(true);
|
|
||||||
for (int i = 0; i < colliders.Length; i++)
|
|
||||||
colliders[i].enabled = false;
|
|
||||||
|
|
||||||
MonoBehaviour[] behaviours = root.GetComponentsInChildren<MonoBehaviour>(true);
|
|
||||||
for (int i = 0; i < behaviours.Length; i++)
|
|
||||||
behaviours[i].enabled = false;
|
|
||||||
|
|
||||||
AudioSource[] audioSources = root.GetComponentsInChildren<AudioSource>(true);
|
|
||||||
for (int i = 0; i < audioSources.Length; i++)
|
|
||||||
{
|
|
||||||
audioSources[i].Stop();
|
|
||||||
audioSources[i].enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ParticleSystem[] particles = root.GetComponentsInChildren<ParticleSystem>(true);
|
|
||||||
for (int i = 0; i < particles.Length; i++)
|
|
||||||
particles[i].Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
|
|
||||||
|
|
||||||
TrailRenderer[] trails = root.GetComponentsInChildren<TrailRenderer>(true);
|
|
||||||
for (int i = 0; i < trails.Length; i++)
|
|
||||||
trails[i].emitting = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RotatePreview()
|
|
||||||
{
|
|
||||||
if (currentPreview == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
currentPreview.transform.Rotate(Vector3.up, previewRotationSpeed * Time.deltaTime, Space.World);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshUi()
|
|
||||||
{
|
|
||||||
if (vehiclePanel != null)
|
|
||||||
vehiclePanel.SetActive(currentStep == Step.Vehicle);
|
|
||||||
if (modePanel != null)
|
|
||||||
modePanel.SetActive(currentStep == Step.Mode);
|
|
||||||
if (mapPanel != null)
|
|
||||||
mapPanel.SetActive(currentStep == Step.Map);
|
|
||||||
|
|
||||||
if (titleText != null)
|
|
||||||
titleText.text = GetTitle();
|
|
||||||
if (subtitleText != null)
|
|
||||||
subtitleText.text = GetSubtitle();
|
|
||||||
if (vehicleNameText != null)
|
|
||||||
vehicleNameText.text = GetVehicleName();
|
|
||||||
if (vehicleClassText != null)
|
|
||||||
vehicleClassText.text = (vehicleIndex + 1) + " / " + Mathf.Max(vehicles != null ? vehicles.Length : 0, 1);
|
|
||||||
|
|
||||||
RefreshModeLabels();
|
|
||||||
RefreshMapLabels();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshModeLabels()
|
|
||||||
{
|
|
||||||
if (modeLabels == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (int i = 0; i < modeLabels.Length && i < modeNames.Length; i++)
|
|
||||||
{
|
|
||||||
if (modeLabels[i] != null)
|
|
||||||
modeLabels[i].text = i == modeIndex ? "< " + modeNames[i] + " >" : modeNames[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshMapLabels()
|
|
||||||
{
|
|
||||||
if (mapLabels == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
MapOption selectedMap = GetMapForCurrentMode(mapIndex);
|
|
||||||
for (int i = 0; i < mapLabels.Length; i++)
|
|
||||||
{
|
|
||||||
if (mapLabels[i] != null)
|
|
||||||
mapLabels[i].text = selectedMap != null ? selectedMap.displayName : "NO MAPS";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetTitle()
|
|
||||||
{
|
|
||||||
if (currentStep == Step.Mode)
|
|
||||||
return "\u0420\u0415\u0416\u0418\u041c \u0418\u0413\u0420\u042b";
|
|
||||||
if (currentStep == Step.Map)
|
|
||||||
return "\u0412\u042b\u0411\u041e\u0420 \u041a\u0410\u0420\u0422\u042b";
|
|
||||||
|
|
||||||
return "\u0412\u042b\u0411\u041e\u0420 \u041c\u0410\u0428\u0418\u041d\u042b";
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetSubtitle()
|
|
||||||
{
|
|
||||||
if (currentStep == Step.Vehicle)
|
|
||||||
return "\u0421\u0422\u0420\u0415\u041b\u041a\u0418 / A-D - \u041c\u0410\u0428\u0418\u041d\u0410 SPACE - \u0412\u042b\u0411\u0420\u0410\u0422\u042c";
|
|
||||||
if (currentStep == Step.Mode)
|
|
||||||
return "\u0421\u0422\u0420\u0415\u041b\u041a\u0418 / A-D - \u0420\u0415\u0416\u0418\u041c SPACE - \u0414\u0410\u041b\u042c\u0428\u0415 ESC - \u041d\u0410\u0417\u0410\u0414";
|
|
||||||
|
|
||||||
return "\u0421\u0422\u0420\u0415\u041b\u041a\u0418 / A-D - \u041a\u0410\u0420\u0422\u0410 SPACE - \u0421\u0422\u0410\u0420\u0422 ESC - \u041d\u0410\u0417\u0410\u0414";
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetVehicleName()
|
|
||||||
{
|
|
||||||
if (vehicles == null || vehicles.Length == 0 || vehicles[vehicleIndex] == null)
|
|
||||||
return "NO VEHICLE";
|
|
||||||
|
|
||||||
return string.IsNullOrWhiteSpace(vehicles[vehicleIndex].displayName) ? vehicles[vehicleIndex].prefab.name : vehicles[vehicleIndex].displayName;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StartSelectedMap()
|
|
||||||
{
|
|
||||||
MapOption selectedMap = GetMapForCurrentMode(mapIndex);
|
|
||||||
if (selectedMap == null || string.IsNullOrWhiteSpace(selectedMap.sceneName))
|
|
||||||
{
|
|
||||||
Debug.LogWarning("No map is configured for selected game mode.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SelectedGameMode selectedMode = modeIndex == 0 ? SelectedGameMode.Arena : SelectedGameMode.SurvivalRace;
|
|
||||||
GameObject selectedPrefab = vehicles != null && vehicles.Length > 0 ? vehicles[vehicleIndex].prefab : null;
|
|
||||||
GameSelectionState.SetSelection(selectedPrefab, GetVehicleName(), selectedMode, selectedMap.sceneName);
|
|
||||||
SceneManager.LoadScene(selectedMap.sceneName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private MapOption GetMapForCurrentMode(int filteredIndex)
|
|
||||||
{
|
|
||||||
if (maps == null || maps.Length == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
SelectedGameMode selectedMode = modeIndex == 0 ? SelectedGameMode.Arena : SelectedGameMode.SurvivalRace;
|
|
||||||
int currentFilteredIndex = 0;
|
|
||||||
for (int i = 0; i < maps.Length; i++)
|
|
||||||
{
|
|
||||||
if (maps[i] == null || maps[i].mode != selectedMode)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (currentFilteredIndex == filteredIndex)
|
|
||||||
return maps[i];
|
|
||||||
|
|
||||||
currentFilteredIndex++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int GetMapCountForCurrentMode()
|
|
||||||
{
|
|
||||||
if (maps == null || maps.Length == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
SelectedGameMode selectedMode = modeIndex == 0 ? SelectedGameMode.Arena : SelectedGameMode.SurvivalRace;
|
|
||||||
int count = 0;
|
|
||||||
for (int i = 0; i < maps.Length; i++)
|
|
||||||
{
|
|
||||||
if (maps[i] != null && maps[i].mode == selectedMode)
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int Wrap(int value, int length)
|
|
||||||
{
|
|
||||||
if (length <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
value %= length;
|
|
||||||
return value < 0 ? value + length : value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a5d1a3f92bb756c4d8237587a81bc651
|
|
||||||
@ -1,225 +0,0 @@
|
|||||||
using RaceFields.Vehicles;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Harvesters.AI
|
|
||||||
{
|
|
||||||
[RequireComponent(typeof(Rigidbody))]
|
|
||||||
public sealed class HarvesterChaseController : MonoBehaviour
|
|
||||||
{
|
|
||||||
[Header("Target")]
|
|
||||||
[SerializeField] private Transform target;
|
|
||||||
[SerializeField] private bool autoFindPlayer = true;
|
|
||||||
[SerializeField] private float targetSearchInterval = 0.35f;
|
|
||||||
|
|
||||||
[Header("Wheel Colliders")]
|
|
||||||
[SerializeField] private WheelCollider frontLeftCollider;
|
|
||||||
[SerializeField] private WheelCollider frontRightCollider;
|
|
||||||
[SerializeField] private WheelCollider rearLeftCollider;
|
|
||||||
[SerializeField] private WheelCollider rearRightCollider;
|
|
||||||
|
|
||||||
[Header("Wheel Visuals")]
|
|
||||||
[SerializeField] private Transform frontLeftVisual;
|
|
||||||
[SerializeField] private Transform frontRightVisual;
|
|
||||||
[SerializeField] private Transform rearLeftVisual;
|
|
||||||
[SerializeField] private Transform rearRightVisual;
|
|
||||||
|
|
||||||
[Header("Movement")]
|
|
||||||
[SerializeField] private float maxSpeedKmh = 55f;
|
|
||||||
[SerializeField] private float motorTorque = 30000f;
|
|
||||||
[SerializeField] private float brakeTorque = 6500f;
|
|
||||||
[SerializeField] private float maxSteerAngle = 28f;
|
|
||||||
[SerializeField] private float steeringResponse = 4f;
|
|
||||||
[SerializeField] private float stoppingDistance = 1.4f;
|
|
||||||
[SerializeField] private float reverseDistance = 0.7f;
|
|
||||||
[SerializeField] private float downforce = 45f;
|
|
||||||
|
|
||||||
[Header("Stability")]
|
|
||||||
[SerializeField] private Vector3 centerOfMass = new Vector3(0f, -0.65f, 0.2f);
|
|
||||||
|
|
||||||
private Rigidbody body;
|
|
||||||
private float nextTargetSearchTime;
|
|
||||||
private float currentSteerAngle;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
body = GetComponent<Rigidbody>();
|
|
||||||
AutoFindReferences();
|
|
||||||
|
|
||||||
body.centerOfMass = centerOfMass;
|
|
||||||
body.interpolation = RigidbodyInterpolation.Interpolate;
|
|
||||||
body.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FixedUpdate()
|
|
||||||
{
|
|
||||||
ResolveTarget();
|
|
||||||
UpdateDriving();
|
|
||||||
ApplyDownforce();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
UpdateWheelVisuals();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetTarget(Transform newTarget)
|
|
||||||
{
|
|
||||||
target = newTarget;
|
|
||||||
nextTargetSearchTime = Time.time + targetSearchInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateDriving()
|
|
||||||
{
|
|
||||||
if (target == null)
|
|
||||||
{
|
|
||||||
ApplyBrake(brakeTorque);
|
|
||||||
ApplyMotor(0f);
|
|
||||||
SetSteering(0f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector3 localTarget = transform.InverseTransformPoint(target.position);
|
|
||||||
localTarget.y = 0f;
|
|
||||||
float distance = localTarget.magnitude;
|
|
||||||
if (distance < 0.1f)
|
|
||||||
{
|
|
||||||
ApplyBrake(brakeTorque);
|
|
||||||
ApplyMotor(0f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float speedKmh = body.linearVelocity.magnitude * 3.6f;
|
|
||||||
float targetAngle = Mathf.Atan2(localTarget.x, localTarget.z) * Mathf.Rad2Deg;
|
|
||||||
float desiredSteer = Mathf.Clamp(targetAngle, -maxSteerAngle, maxSteerAngle);
|
|
||||||
if (localTarget.z < 0f && Mathf.Abs(localTarget.x) < 0.5f)
|
|
||||||
desiredSteer = currentSteerAngle >= 0f ? maxSteerAngle : -maxSteerAngle;
|
|
||||||
|
|
||||||
SetSteering(desiredSteer);
|
|
||||||
|
|
||||||
if (distance <= reverseDistance)
|
|
||||||
{
|
|
||||||
ApplyBrake(0f);
|
|
||||||
ApplyMotor(-motorTorque * 0.45f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (distance <= stoppingDistance)
|
|
||||||
{
|
|
||||||
ApplyBrake(brakeTorque);
|
|
||||||
ApplyMotor(0f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float angleFactor = Mathf.Clamp(1f - Mathf.Abs(targetAngle) / 130f * 0.5f, 0.65f, 1f);
|
|
||||||
float speedFactor = speedKmh < maxSpeedKmh ? 1f : 0f;
|
|
||||||
float torque = motorTorque * angleFactor * speedFactor;
|
|
||||||
|
|
||||||
ApplyBrake(0f);
|
|
||||||
ApplyMotor(torque);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetSteering(float desiredAngle)
|
|
||||||
{
|
|
||||||
currentSteerAngle = Mathf.Lerp(currentSteerAngle, desiredAngle, steeringResponse * Time.fixedDeltaTime);
|
|
||||||
if (frontLeftCollider != null)
|
|
||||||
frontLeftCollider.steerAngle = currentSteerAngle;
|
|
||||||
if (frontRightCollider != null)
|
|
||||||
frontRightCollider.steerAngle = currentSteerAngle;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ApplyMotor(float torque)
|
|
||||||
{
|
|
||||||
SetMotorTorque(frontLeftCollider, torque * 0.5f);
|
|
||||||
SetMotorTorque(frontRightCollider, torque * 0.5f);
|
|
||||||
SetMotorTorque(rearLeftCollider, torque);
|
|
||||||
SetMotorTorque(rearRightCollider, torque);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ApplyBrake(float torque)
|
|
||||||
{
|
|
||||||
SetBrakeTorque(frontLeftCollider, torque);
|
|
||||||
SetBrakeTorque(frontRightCollider, torque);
|
|
||||||
SetBrakeTorque(rearLeftCollider, torque);
|
|
||||||
SetBrakeTorque(rearRightCollider, torque);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ApplyDownforce()
|
|
||||||
{
|
|
||||||
body.AddForce(-transform.up * downforce * body.linearVelocity.magnitude, ForceMode.Force);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateWheelVisuals()
|
|
||||||
{
|
|
||||||
SyncWheelVisual(frontLeftCollider, frontLeftVisual);
|
|
||||||
SyncWheelVisual(frontRightCollider, frontRightVisual);
|
|
||||||
SyncWheelVisual(rearLeftCollider, rearLeftVisual);
|
|
||||||
SyncWheelVisual(rearRightCollider, rearRightVisual);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResolveTarget()
|
|
||||||
{
|
|
||||||
if (target != null || !autoFindPlayer)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (Time.time < nextTargetSearchTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nextTargetSearchTime = Time.time + targetSearchInterval;
|
|
||||||
ArcadeBuggyController player = Object.FindFirstObjectByType<ArcadeBuggyController>();
|
|
||||||
if (player != null)
|
|
||||||
target = player.transform;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AutoFindReferences()
|
|
||||||
{
|
|
||||||
frontLeftCollider ??= FindChildComponent<WheelCollider>("WheelCollider_FL");
|
|
||||||
frontRightCollider ??= FindChildComponent<WheelCollider>("WheelCollider_FR");
|
|
||||||
rearLeftCollider ??= FindChildComponent<WheelCollider>("WheelCollider_RL");
|
|
||||||
rearRightCollider ??= FindChildComponent<WheelCollider>("WheelCollider_RR");
|
|
||||||
|
|
||||||
frontLeftVisual ??= FindChildTransform("H_Wheel_FL");
|
|
||||||
frontRightVisual ??= FindChildTransform("H_Wheel_FR");
|
|
||||||
rearLeftVisual ??= FindChildTransform("H_Wheel_RL");
|
|
||||||
rearRightVisual ??= FindChildTransform("H_Wheel_RR");
|
|
||||||
}
|
|
||||||
|
|
||||||
private T FindChildComponent<T>(string childName) where T : Component
|
|
||||||
{
|
|
||||||
Transform child = FindChildTransform(childName);
|
|
||||||
return child != null ? child.GetComponent<T>() : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Transform FindChildTransform(string childName)
|
|
||||||
{
|
|
||||||
Transform[] children = GetComponentsInChildren<Transform>(true);
|
|
||||||
for (int i = 0; i < children.Length; i++)
|
|
||||||
{
|
|
||||||
if (children[i].name == childName)
|
|
||||||
return children[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SetMotorTorque(WheelCollider wheel, float torque)
|
|
||||||
{
|
|
||||||
if (wheel != null)
|
|
||||||
wheel.motorTorque = torque;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SetBrakeTorque(WheelCollider wheel, float torque)
|
|
||||||
{
|
|
||||||
if (wheel != null)
|
|
||||||
wheel.brakeTorque = torque;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SyncWheelVisual(WheelCollider collider, Transform visual)
|
|
||||||
{
|
|
||||||
if (collider == null || visual == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
collider.GetWorldPose(out Vector3 position, out Quaternion rotation);
|
|
||||||
visual.SetPositionAndRotation(position, rotation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4d8c0e258b3d5b74e8d179d4cc96c122
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace RaceFields.Harvesters.Visuals
|
|
||||||
{
|
|
||||||
public sealed class HarvesterBladeSpinner : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private float rotationSpeed = 720f;
|
|
||||||
[SerializeField] private Space rotationSpace = Space.Self;
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
transform.Rotate(Vector3.right, rotationSpeed * Time.deltaTime, rotationSpace);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 314cfddae3eb4784ca1f6c04a3ac82f5
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class WeaponPickup : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private GameObject pickupPrefab;
|
|
||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
|
||||||
{
|
|
||||||
if (pickupPrefab == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
VehicleWeaponInventory inventory = other.GetComponentInParent<VehicleWeaponInventory>();
|
|
||||||
if (inventory == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
inventory.AddWeapon(pickupPrefab);
|
|
||||||
Destroy(gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9ba2d729446c7924fae0c23b6f68a343
|
|
||||||
@ -1,127 +0,0 @@
|
|||||||
using RaceFields.Damage;
|
|
||||||
using RaceFields.Damage.VehicleDamage;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
namespace RaceFields.UI.HUD
|
|
||||||
{
|
|
||||||
public sealed class VehicleDamageHud : MonoBehaviour
|
|
||||||
{
|
|
||||||
[System.Serializable]
|
|
||||||
public sealed class ModuleImage
|
|
||||||
{
|
|
||||||
public VehicleModuleType moduleType;
|
|
||||||
public Image image;
|
|
||||||
}
|
|
||||||
|
|
||||||
[SerializeField] private VehicleDamageController target;
|
|
||||||
[SerializeField] private bool autoFindTarget = true;
|
|
||||||
[SerializeField] private float targetSearchInterval = 0.35f;
|
|
||||||
[SerializeField] private Image fullVehicleImage;
|
|
||||||
[SerializeField] private ModuleImage[] moduleImages;
|
|
||||||
[SerializeField] private Color healthyColor = new Color(1f, 1f, 1f, 0f);
|
|
||||||
[SerializeField] private Color damagedColor = new Color(1f, 0f, 0f, 0.7f);
|
|
||||||
[SerializeField] private Color destroyedColor = new Color(0f, 0f, 0f, 0.85f);
|
|
||||||
|
|
||||||
private VehicleDamageController boundTarget;
|
|
||||||
private float nextTargetSearchTime;
|
|
||||||
|
|
||||||
private void OnEnable()
|
|
||||||
{
|
|
||||||
Bind(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDisable()
|
|
||||||
{
|
|
||||||
Unbind();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (target != null || !autoFindTarget)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (Time.unscaledTime < nextTargetSearchTime)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nextTargetSearchTime = Time.unscaledTime + targetSearchInterval;
|
|
||||||
Bind(Object.FindAnyObjectByType<VehicleDamageController>());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Bind(VehicleDamageController newTarget)
|
|
||||||
{
|
|
||||||
if (boundTarget == newTarget)
|
|
||||||
{
|
|
||||||
target = newTarget;
|
|
||||||
RefreshAll();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Unbind();
|
|
||||||
target = newTarget;
|
|
||||||
boundTarget = newTarget;
|
|
||||||
if (boundTarget != null)
|
|
||||||
boundTarget.ModuleStateChanged += HandleModuleStateChanged;
|
|
||||||
|
|
||||||
RefreshAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Unbind()
|
|
||||||
{
|
|
||||||
if (boundTarget != null)
|
|
||||||
boundTarget.ModuleStateChanged -= HandleModuleStateChanged;
|
|
||||||
|
|
||||||
boundTarget = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleModuleStateChanged(VehicleDamageController.VehicleModule module)
|
|
||||||
{
|
|
||||||
RefreshModule(module);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshAll()
|
|
||||||
{
|
|
||||||
if (fullVehicleImage != null)
|
|
||||||
{
|
|
||||||
fullVehicleImage.enabled = true;
|
|
||||||
fullVehicleImage.color = Color.white;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (moduleImages == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (int i = 0; i < moduleImages.Length; i++)
|
|
||||||
{
|
|
||||||
VehicleDamageController.VehicleModule module = target != null ? target.GetModule(moduleImages[i].moduleType) : null;
|
|
||||||
SetModuleImage(moduleImages[i], module != null ? module.State : VehicleModuleState.Healthy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshModule(VehicleDamageController.VehicleModule module)
|
|
||||||
{
|
|
||||||
if (moduleImages == null || module == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (int i = 0; i < moduleImages.Length; i++)
|
|
||||||
{
|
|
||||||
if (moduleImages[i].moduleType == module.ModuleType)
|
|
||||||
SetModuleImage(moduleImages[i], module.State);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetModuleImage(ModuleImage moduleImage, VehicleModuleState state)
|
|
||||||
{
|
|
||||||
if (moduleImage == null || moduleImage.image == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
moduleImage.image.enabled = true;
|
|
||||||
moduleImage.image.color = state switch
|
|
||||||
{
|
|
||||||
VehicleModuleState.Damaged => damagedColor,
|
|
||||||
VehicleModuleState.Destroyed => destroyedColor,
|
|
||||||
VehicleModuleState.Detached => destroyedColor,
|
|
||||||
_ => healthyColor
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0bfd334c2a5c6d34b95197adeff4252e
|
|
||||||
@ -42,7 +42,7 @@ namespace RaceFields.Vehicles
|
|||||||
[SerializeField] private TrailRenderer rearRightSkid;
|
[SerializeField] private TrailRenderer rearRightSkid;
|
||||||
|
|
||||||
[Header("Sounds")]
|
[Header("Sounds")]
|
||||||
[SerializeField] private bool useSounds = true;
|
[SerializeField] private bool useSounds;
|
||||||
[SerializeField] private AudioSource engineSound;
|
[SerializeField] private AudioSource engineSound;
|
||||||
[SerializeField] private AudioSource tireScreechSound;
|
[SerializeField] private AudioSource tireScreechSound;
|
||||||
|
|
||||||
@ -50,42 +50,6 @@ namespace RaceFields.Vehicles
|
|||||||
public bool IsDrifting { get; private set; }
|
public bool IsDrifting { get; private set; }
|
||||||
public bool IsTractionLocked { get; private set; }
|
public bool IsTractionLocked { get; private set; }
|
||||||
|
|
||||||
public WheelCollider GetWheelCollider(WheelSlot slot)
|
|
||||||
{
|
|
||||||
return slot switch
|
|
||||||
{
|
|
||||||
WheelSlot.FrontLeft => frontLeftCollider,
|
|
||||||
WheelSlot.FrontRight => frontRightCollider,
|
|
||||||
WheelSlot.RearLeft => rearLeftCollider,
|
|
||||||
WheelSlot.RearRight => rearRightCollider,
|
|
||||||
_ => null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public Transform GetWheelVisual(WheelSlot slot)
|
|
||||||
{
|
|
||||||
return slot switch
|
|
||||||
{
|
|
||||||
WheelSlot.FrontLeft => frontLeftVisual,
|
|
||||||
WheelSlot.FrontRight => frontRightVisual,
|
|
||||||
WheelSlot.RearLeft => rearLeftVisual,
|
|
||||||
WheelSlot.RearRight => rearRightVisual,
|
|
||||||
_ => null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetWheelEnabled(WheelSlot slot, bool enabled)
|
|
||||||
{
|
|
||||||
WheelCollider wheel = GetWheelCollider(slot);
|
|
||||||
if (wheel != null)
|
|
||||||
{
|
|
||||||
wheel.motorTorque = 0f;
|
|
||||||
wheel.brakeTorque = enabled ? 0f : brakeForce;
|
|
||||||
wheel.steerAngle = 0f;
|
|
||||||
wheel.enabled = enabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private const float TorquePerAccelerationStep = 50f;
|
private const float TorquePerAccelerationStep = 50f;
|
||||||
private const float DriftVelocityThreshold = 2.5f;
|
private const float DriftVelocityThreshold = 2.5f;
|
||||||
private const float SkidVelocityThreshold = 5f;
|
private const float SkidVelocityThreshold = 5f;
|
||||||
@ -119,7 +83,7 @@ namespace RaceFields.Vehicles
|
|||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
body = GetComponent<Rigidbody>();
|
body = GetComponent<Rigidbody>();
|
||||||
ValidateRequiredReferences();
|
AutoFindReferences();
|
||||||
CacheVisualRotationOffsets();
|
CacheVisualRotationOffsets();
|
||||||
CacheWheelFriction();
|
CacheWheelFriction();
|
||||||
|
|
||||||
@ -161,15 +125,9 @@ namespace RaceFields.Vehicles
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if ENABLE_LEGACY_INPUT_MANAGER
|
|
||||||
throttleInput = Input.GetAxisRaw("Vertical");
|
throttleInput = Input.GetAxisRaw("Vertical");
|
||||||
steeringInput = Input.GetAxisRaw("Horizontal");
|
steeringInput = Input.GetAxisRaw("Horizontal");
|
||||||
handbrakeInput = Input.GetKey(KeyCode.Space);
|
handbrakeInput = Input.GetKey(KeyCode.Space);
|
||||||
#else
|
|
||||||
throttleInput = 0f;
|
|
||||||
steeringInput = 0f;
|
|
||||||
handbrakeInput = false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateTelemetry()
|
private void UpdateTelemetry()
|
||||||
@ -233,7 +191,7 @@ namespace RaceFields.Vehicles
|
|||||||
throttleAxis = Mathf.MoveTowards(throttleAxis, 0f, Time.fixedDeltaTime * 10f);
|
throttleAxis = Mathf.MoveTowards(throttleAxis, 0f, Time.fixedDeltaTime * 10f);
|
||||||
ApplyMotorTorque(0f);
|
ApplyMotorTorque(0f);
|
||||||
|
|
||||||
if (!handbrakeInput && IsAnyWheelGrounded())
|
if (!handbrakeInput)
|
||||||
{
|
{
|
||||||
ApplyBrakeTorque(0f);
|
ApplyBrakeTorque(0f);
|
||||||
body.linearVelocity *= 1f / (1f + 0.025f * decelerationMultiplier);
|
body.linearVelocity *= 1f / (1f + 0.025f * decelerationMultiplier);
|
||||||
@ -265,9 +223,6 @@ namespace RaceFields.Vehicles
|
|||||||
|
|
||||||
private void ApplyDownforce()
|
private void ApplyDownforce()
|
||||||
{
|
{
|
||||||
if (!IsAnyWheelGrounded())
|
|
||||||
return;
|
|
||||||
|
|
||||||
body.AddForce(-transform.up * downforce * body.linearVelocity.magnitude, ForceMode.Force);
|
body.AddForce(-transform.up * downforce * body.linearVelocity.magnitude, ForceMode.Force);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +237,7 @@ namespace RaceFields.Vehicles
|
|||||||
|
|
||||||
if (engineSound != null)
|
if (engineSound != null)
|
||||||
{
|
{
|
||||||
if (engineSound.clip != null && !engineSound.isPlaying)
|
if (!engineSound.isPlaying)
|
||||||
engineSound.Play();
|
engineSound.Play();
|
||||||
|
|
||||||
engineSound.pitch = initialEnginePitch + body.linearVelocity.magnitude / 25f;
|
engineSound.pitch = initialEnginePitch + body.linearVelocity.magnitude / 25f;
|
||||||
@ -292,7 +247,7 @@ namespace RaceFields.Vehicles
|
|||||||
bool shouldScreech = rearWheelsGrounded && (IsDrifting || (IsTractionLocked && SpeedKmh > EffectsMinSpeedKmh));
|
bool shouldScreech = rearWheelsGrounded && (IsDrifting || (IsTractionLocked && SpeedKmh > EffectsMinSpeedKmh));
|
||||||
if (tireScreechSound != null)
|
if (tireScreechSound != null)
|
||||||
{
|
{
|
||||||
if (shouldScreech && tireScreechSound.clip != null && !tireScreechSound.isPlaying)
|
if (shouldScreech && !tireScreechSound.isPlaying)
|
||||||
tireScreechSound.Play();
|
tireScreechSound.Play();
|
||||||
else if (!shouldScreech && tireScreechSound.isPlaying)
|
else if (!shouldScreech && tireScreechSound.isPlaying)
|
||||||
tireScreechSound.Stop();
|
tireScreechSound.Stop();
|
||||||
@ -349,7 +304,7 @@ namespace RaceFields.Vehicles
|
|||||||
|
|
||||||
private void ApplySidewaysFriction(WheelCollider wheel, ref WheelFrictionCurve friction, float defaultExtremumSlip, float drift)
|
private void ApplySidewaysFriction(WheelCollider wheel, ref WheelFrictionCurve friction, float defaultExtremumSlip, float drift)
|
||||||
{
|
{
|
||||||
if (wheel == null || !wheel.enabled)
|
if (wheel == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float driftExtremumSlip = defaultExtremumSlip * handbrakeDriftMultiplier;
|
float driftExtremumSlip = defaultExtremumSlip * handbrakeDriftMultiplier;
|
||||||
@ -375,25 +330,25 @@ namespace RaceFields.Vehicles
|
|||||||
|
|
||||||
private static void SetSteerAngle(WheelCollider wheel, float angle, float lerp)
|
private static void SetSteerAngle(WheelCollider wheel, float angle, float lerp)
|
||||||
{
|
{
|
||||||
if (wheel != null && wheel.enabled)
|
if (wheel != null)
|
||||||
wheel.steerAngle = Mathf.Lerp(wheel.steerAngle, angle, lerp);
|
wheel.steerAngle = Mathf.Lerp(wheel.steerAngle, angle, lerp);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetDriveTorque(WheelCollider wheel, float torque)
|
private static void SetDriveTorque(WheelCollider wheel, float torque)
|
||||||
{
|
{
|
||||||
if (wheel != null && wheel.enabled)
|
if (wheel != null)
|
||||||
wheel.motorTorque = torque;
|
wheel.motorTorque = torque;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetBrakeTorque(WheelCollider wheel, float torque)
|
private static void SetBrakeTorque(WheelCollider wheel, float torque)
|
||||||
{
|
{
|
||||||
if (wheel != null && wheel.enabled)
|
if (wheel != null)
|
||||||
wheel.brakeTorque = torque;
|
wheel.brakeTorque = torque;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SyncWheelVisual(WheelCollider collider, Transform visual, Quaternion visualRotationOffset)
|
private static void SyncWheelVisual(WheelCollider collider, Transform visual, Quaternion visualRotationOffset)
|
||||||
{
|
{
|
||||||
if (collider == null || !collider.enabled || visual == null)
|
if (collider == null || visual == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
collider.GetWorldPose(out Vector3 position, out Quaternion rotation);
|
collider.GetWorldPose(out Vector3 position, out Quaternion rotation);
|
||||||
@ -427,15 +382,7 @@ namespace RaceFields.Vehicles
|
|||||||
|
|
||||||
private static bool IsWheelGrounded(WheelCollider wheel)
|
private static bool IsWheelGrounded(WheelCollider wheel)
|
||||||
{
|
{
|
||||||
return wheel != null && wheel.enabled && wheel.isGrounded;
|
return wheel != null && wheel.isGrounded;
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsAnyWheelGrounded()
|
|
||||||
{
|
|
||||||
return IsWheelGrounded(frontLeftCollider) ||
|
|
||||||
IsWheelGrounded(frontRightCollider) ||
|
|
||||||
IsWheelGrounded(rearLeftCollider) ||
|
|
||||||
IsWheelGrounded(rearRightCollider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StopAudio(AudioSource source)
|
private static void StopAudio(AudioSource source)
|
||||||
@ -444,13 +391,22 @@ namespace RaceFields.Vehicles
|
|||||||
source.Stop();
|
source.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ValidateRequiredReferences()
|
private void AutoFindReferences()
|
||||||
{
|
{
|
||||||
if (frontLeftCollider != null && frontRightCollider != null && rearLeftCollider != null && rearRightCollider != null)
|
frontLeftCollider ??= FindChildComponent<WheelCollider>("WheelCollider_FL");
|
||||||
return;
|
frontRightCollider ??= FindChildComponent<WheelCollider>("WheelCollider_FR");
|
||||||
|
rearLeftCollider ??= FindChildComponent<WheelCollider>("WheelCollider_RL");
|
||||||
|
rearRightCollider ??= FindChildComponent<WheelCollider>("WheelCollider_RR");
|
||||||
|
|
||||||
Debug.LogError($"{name} is missing one or more wheel collider references.", this);
|
frontLeftVisual ??= FindFirstChildTransform("F_L", "WheelVisual_FL");
|
||||||
enabled = false;
|
frontRightVisual ??= FindFirstChildTransform("F_R", "WheelVisual_FR");
|
||||||
|
rearLeftVisual ??= FindFirstChildTransform("B_L", "WheelVisual_RL");
|
||||||
|
rearRightVisual ??= FindFirstChildTransform("B_R", "WheelVisual_RR");
|
||||||
|
|
||||||
|
rearLeftSmoke ??= FindChildComponent<ParticleSystem>("LeftTireSmoke_PS");
|
||||||
|
rearRightSmoke ??= FindChildComponent<ParticleSystem>("RightTireSmoke_PS");
|
||||||
|
rearLeftSkid ??= FindChildComponent<TrailRenderer>("LeftTireSkid");
|
||||||
|
rearRightSkid ??= FindChildComponent<TrailRenderer>("RightTireSkid");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CacheVisualRotationOffsets()
|
private void CacheVisualRotationOffsets()
|
||||||
@ -469,5 +425,34 @@ namespace RaceFields.Vehicles
|
|||||||
return Quaternion.Inverse(collider.transform.rotation) * visual.rotation;
|
return Quaternion.Inverse(collider.transform.rotation) * visual.rotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private T FindChildComponent<T>(string childName) where T : Component
|
||||||
|
{
|
||||||
|
Transform child = FindChildTransform(childName);
|
||||||
|
return child != null ? child.GetComponent<T>() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Transform FindChildTransform(string childName)
|
||||||
|
{
|
||||||
|
Transform[] children = GetComponentsInChildren<Transform>(true);
|
||||||
|
for (int i = 0; i < children.Length; i++)
|
||||||
|
{
|
||||||
|
if (children[i].name == childName)
|
||||||
|
return children[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Transform FindFirstChildTransform(params string[] childNames)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < childNames.Length; i++)
|
||||||
|
{
|
||||||
|
Transform child = FindChildTransform(childNames[i]);
|
||||||
|
if (child != null)
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
89
Assets/_Project/Scripts/Vehicles/Wheels/BuggyWheelSetup.cs
Normal file
89
Assets/_Project/Scripts/Vehicles/Wheels/BuggyWheelSetup.cs
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace RaceFields.Vehicles
|
||||||
|
{
|
||||||
|
[ExecuteAlways]
|
||||||
|
public sealed class BuggyWheelSetup : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private string frontLeftWheelName = "F_L";
|
||||||
|
[SerializeField] private string frontRightWheelName = "F_R";
|
||||||
|
[SerializeField] private string rearLeftWheelName = "B_L";
|
||||||
|
[SerializeField] private string rearRightWheelName = "B_R";
|
||||||
|
|
||||||
|
[SerializeField] private string frontLeftColliderName = "WheelCollider_FL";
|
||||||
|
[SerializeField] private string frontRightColliderName = "WheelCollider_FR";
|
||||||
|
[SerializeField] private string rearLeftColliderName = "WheelCollider_RL";
|
||||||
|
[SerializeField] private string rearRightColliderName = "WheelCollider_RR";
|
||||||
|
|
||||||
|
[SerializeField] private float radiusMultiplier = 0.5f;
|
||||||
|
[SerializeField] private float minimumRadius = 0.12f;
|
||||||
|
[SerializeField] private float suspensionDistance = 0.28f;
|
||||||
|
[SerializeField] private float wheelMass = 20f;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
AlignAllWheels();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnValidate()
|
||||||
|
{
|
||||||
|
AlignAllWheels();
|
||||||
|
}
|
||||||
|
|
||||||
|
[ContextMenu("Align Wheel Colliders")]
|
||||||
|
public void AlignAllWheels()
|
||||||
|
{
|
||||||
|
AlignWheel(frontLeftWheelName, frontLeftColliderName);
|
||||||
|
AlignWheel(frontRightWheelName, frontRightColliderName);
|
||||||
|
AlignWheel(rearLeftWheelName, rearLeftColliderName);
|
||||||
|
AlignWheel(rearRightWheelName, rearRightColliderName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AlignWheel(string visualName, string colliderName)
|
||||||
|
{
|
||||||
|
Transform visual = FindChild(visualName);
|
||||||
|
WheelCollider wheelCollider = FindWheelCollider(colliderName);
|
||||||
|
|
||||||
|
if (visual == null || wheelCollider == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
wheelCollider.transform.position = visual.position;
|
||||||
|
wheelCollider.transform.rotation = transform.rotation;
|
||||||
|
wheelCollider.transform.localScale = Vector3.one;
|
||||||
|
|
||||||
|
wheelCollider.mass = wheelMass;
|
||||||
|
wheelCollider.radius = Mathf.Max(minimumRadius, EstimateWheelRadius(visual) * radiusMultiplier);
|
||||||
|
wheelCollider.suspensionDistance = suspensionDistance;
|
||||||
|
wheelCollider.forceAppPointDistance = 0.05f;
|
||||||
|
wheelCollider.wheelDampingRate = 0.35f;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float EstimateWheelRadius(Transform visual)
|
||||||
|
{
|
||||||
|
Renderer renderer = visual.GetComponentInChildren<Renderer>();
|
||||||
|
if (renderer == null)
|
||||||
|
return minimumRadius;
|
||||||
|
|
||||||
|
Vector3 size = renderer.bounds.size;
|
||||||
|
return Mathf.Max(size.y, size.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
private WheelCollider FindWheelCollider(string colliderName)
|
||||||
|
{
|
||||||
|
Transform child = FindChild(colliderName);
|
||||||
|
return child != null ? child.GetComponent<WheelCollider>() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Transform FindChild(string childName)
|
||||||
|
{
|
||||||
|
Transform[] children = GetComponentsInChildren<Transform>(true);
|
||||||
|
for (int i = 0; i < children.Length; i++)
|
||||||
|
{
|
||||||
|
if (children[i].name == childName)
|
||||||
|
return children[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5f00271deee9d014d92d5672e1fe2baa
|
||||||
@ -1,10 +0,0 @@
|
|||||||
namespace RaceFields.Vehicles
|
|
||||||
{
|
|
||||||
public enum WheelSlot
|
|
||||||
{
|
|
||||||
FrontLeft,
|
|
||||||
FrontRight,
|
|
||||||
RearLeft,
|
|
||||||
RearRight
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 56b479bfe048d174ab8a31e6e5ffb13c
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class VehicleWeaponInventory : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private GameObject currentWeapon;
|
|
||||||
[SerializeField] private Transform spawnPoint;
|
|
||||||
|
|
||||||
public void AddWeapon(GameObject weaponPrefab)
|
|
||||||
{
|
|
||||||
if (weaponPrefab == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (currentWeapon != null)
|
|
||||||
Destroy(currentWeapon);
|
|
||||||
|
|
||||||
Transform parent = spawnPoint != null ? spawnPoint : transform;
|
|
||||||
currentWeapon = Instantiate(weaponPrefab, parent);
|
|
||||||
currentWeapon.transform.localPosition = Vector3.zero;
|
|
||||||
currentWeapon.transform.localRotation = Quaternion.identity;
|
|
||||||
|
|
||||||
MachineGunWeapon machineGun = currentWeapon.GetComponentInChildren<MachineGunWeapon>();
|
|
||||||
if (machineGun != null)
|
|
||||||
machineGun.SetOwner(transform);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 89aedc67121ea4f4c98085bc8c9ad0d4
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
using RaceFields.Damage;
|
|
||||||
using RaceFields.Damage.VehicleDamage;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public sealed class BulletProjectile : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private float damage = 8f;
|
|
||||||
[SerializeField] private float impactForce = 25f;
|
|
||||||
[SerializeField] private float lifeTime = 2.5f;
|
|
||||||
|
|
||||||
private Transform ownerRoot;
|
|
||||||
private Rigidbody body;
|
|
||||||
private bool hasHit;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
body = GetComponent<Rigidbody>();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnEnable()
|
|
||||||
{
|
|
||||||
hasHit = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Launch(Vector3 velocity, float shotDamage, float shotLifeTime, Transform owner)
|
|
||||||
{
|
|
||||||
damage = shotDamage;
|
|
||||||
lifeTime = Mathf.Max(0.05f, shotLifeTime);
|
|
||||||
ownerRoot = owner != null ? owner.root : null;
|
|
||||||
|
|
||||||
if (body == null)
|
|
||||||
body = GetComponent<Rigidbody>();
|
|
||||||
|
|
||||||
if (body != null)
|
|
||||||
body.linearVelocity = velocity;
|
|
||||||
|
|
||||||
Destroy(gameObject, lifeTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnCollisionEnter(Collision collision)
|
|
||||||
{
|
|
||||||
if (collision.collider == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Vector3 point = collision.contactCount > 0 ? collision.GetContact(0).point : transform.position;
|
|
||||||
HandleHit(collision.collider, point, body != null ? body.linearVelocity.normalized : transform.forward, collision.rigidbody);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
|
||||||
{
|
|
||||||
HandleHit(other, transform.position, body != null ? body.linearVelocity.normalized : transform.forward, other.attachedRigidbody);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleHit(Collider hitCollider, Vector3 point, Vector3 direction, Rigidbody hitBody)
|
|
||||||
{
|
|
||||||
if (hasHit || hitCollider == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (ownerRoot != null && hitCollider.transform.root == ownerRoot)
|
|
||||||
return;
|
|
||||||
|
|
||||||
hasHit = true;
|
|
||||||
|
|
||||||
DamageHitbox hitbox = hitCollider.GetComponentInParent<DamageHitbox>();
|
|
||||||
if (hitbox != null)
|
|
||||||
{
|
|
||||||
hitbox.ApplyDamage(new DamageHit(damage, DamageType.Projectile, point, direction, gameObject));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SimpleDamageReceiver damageReceiver = hitCollider.GetComponentInParent<SimpleDamageReceiver>();
|
|
||||||
if (damageReceiver != null)
|
|
||||||
damageReceiver.ApplyDamage(damage, point, direction, gameObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hitBody != null && (ownerRoot == null || hitBody.transform.root != ownerRoot))
|
|
||||||
hitBody.AddForceAtPosition(direction * impactForce, point, ForceMode.Impulse);
|
|
||||||
|
|
||||||
Destroy(gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9a787488e597d6a4ca2a4d452e6ee62a
|
|
||||||
@ -1,151 +0,0 @@
|
|||||||
using RaceFields.Harvesters.AI;
|
|
||||||
using UnityEngine;
|
|
||||||
#if ENABLE_INPUT_SYSTEM
|
|
||||||
using UnityEngine.InputSystem;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
public sealed class MachineGunWeapon : MonoBehaviour
|
|
||||||
{
|
|
||||||
[Header("References")]
|
|
||||||
[SerializeField] private Transform aimPivot;
|
|
||||||
[SerializeField] private Transform muzzle;
|
|
||||||
[SerializeField] private BulletProjectile projectilePrefab;
|
|
||||||
[SerializeField] private ParticleSystem muzzleFlash;
|
|
||||||
|
|
||||||
[Header("Targeting")]
|
|
||||||
[SerializeField] private float targetSearchRadius = 80f;
|
|
||||||
[SerializeField] private float targetHeightOffset = 1.1f;
|
|
||||||
[SerializeField] private float aimTurnSpeed = 18f;
|
|
||||||
|
|
||||||
[Header("Shooting")]
|
|
||||||
[SerializeField] private float fireRate = 12f;
|
|
||||||
[SerializeField] private float damagePerShot = 8f;
|
|
||||||
[SerializeField] private float projectileSpeed = 70f;
|
|
||||||
[SerializeField] private float projectileLifeTime = 2.5f;
|
|
||||||
[SerializeField] private float spreadAngle = 1.2f;
|
|
||||||
|
|
||||||
private Transform ownerRoot;
|
|
||||||
private Transform currentTarget;
|
|
||||||
private float nextShotTime;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
if (aimPivot == null)
|
|
||||||
aimPivot = transform;
|
|
||||||
if (muzzle == null)
|
|
||||||
muzzle = transform;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnEnable()
|
|
||||||
{
|
|
||||||
nextShotTime = 0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
AcquireTarget();
|
|
||||||
AimAtTarget();
|
|
||||||
|
|
||||||
if (IsFireHeld())
|
|
||||||
TryShoot();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetOwner(Transform owner)
|
|
||||||
{
|
|
||||||
ownerRoot = owner != null ? owner.root : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AcquireTarget()
|
|
||||||
{
|
|
||||||
if (IsValidTarget(currentTarget))
|
|
||||||
return;
|
|
||||||
|
|
||||||
currentTarget = null;
|
|
||||||
HarvesterChaseController[] enemies = Object.FindObjectsByType<HarvesterChaseController>(FindObjectsInactive.Exclude, FindObjectsSortMode.None);
|
|
||||||
float bestDistanceSqr = targetSearchRadius * targetSearchRadius;
|
|
||||||
Vector3 origin = transform.position;
|
|
||||||
|
|
||||||
for (int i = 0; i < enemies.Length; i++)
|
|
||||||
{
|
|
||||||
if (enemies[i] == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Transform candidate = enemies[i].transform;
|
|
||||||
float distanceSqr = (candidate.position - origin).sqrMagnitude;
|
|
||||||
if (distanceSqr >= bestDistanceSqr)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
currentTarget = candidate;
|
|
||||||
bestDistanceSqr = distanceSqr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsValidTarget(Transform target)
|
|
||||||
{
|
|
||||||
if (target == null || !target.gameObject.activeInHierarchy)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return (target.position - transform.position).sqrMagnitude <= targetSearchRadius * targetSearchRadius;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AimAtTarget()
|
|
||||||
{
|
|
||||||
if (currentTarget == null || aimPivot == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Vector3 targetPoint = currentTarget.position + Vector3.up * targetHeightOffset;
|
|
||||||
Vector3 direction = targetPoint - aimPivot.position;
|
|
||||||
if (direction.sqrMagnitude < 0.001f)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Quaternion targetRotation = Quaternion.LookRotation(direction.normalized, Vector3.up);
|
|
||||||
aimPivot.rotation = Quaternion.Slerp(aimPivot.rotation, targetRotation, aimTurnSpeed * Time.deltaTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TryShoot()
|
|
||||||
{
|
|
||||||
if (Time.time < nextShotTime || projectilePrefab == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nextShotTime = Time.time + 1f / Mathf.Max(0.01f, fireRate);
|
|
||||||
ShootProjectile();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ShootProjectile()
|
|
||||||
{
|
|
||||||
Vector3 direction = ApplySpread(muzzle.forward);
|
|
||||||
BulletProjectile projectile = Instantiate(projectilePrefab, muzzle.position, Quaternion.LookRotation(direction, Vector3.up));
|
|
||||||
projectile.Launch(direction * projectileSpeed, damagePerShot, projectileLifeTime, ownerRoot);
|
|
||||||
|
|
||||||
if (muzzleFlash != null)
|
|
||||||
muzzleFlash.Play();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Vector3 ApplySpread(Vector3 direction)
|
|
||||||
{
|
|
||||||
if (spreadAngle <= 0f)
|
|
||||||
return direction.normalized;
|
|
||||||
|
|
||||||
Quaternion spread = Quaternion.Euler(
|
|
||||||
Random.Range(-spreadAngle, spreadAngle),
|
|
||||||
Random.Range(-spreadAngle, spreadAngle),
|
|
||||||
0f);
|
|
||||||
return (spread * direction).normalized;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsFireHeld()
|
|
||||||
{
|
|
||||||
#if ENABLE_INPUT_SYSTEM
|
|
||||||
if (Mouse.current != null)
|
|
||||||
return Mouse.current.leftButton.isPressed;
|
|
||||||
#endif
|
|
||||||
#if ENABLE_LEGACY_INPUT_MANAGER
|
|
||||||
return Input.GetMouseButton(0);
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d3422cd562818d448a78afdc747d8166
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: bafbd2a0515a0f9428d348bd954e9327
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.coplaydev.unity-mcp": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main",
|
"com.coplaydev.unity-mcp": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main",
|
||||||
"com.unity.2d.psdimporter": "14.0.3",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
"com.unity.2d.sprite": "1.0.0",
|
||||||
"com.unity.ai.navigation": "2.0.13",
|
"com.unity.ai.navigation": "2.0.13",
|
||||||
"com.unity.collab-proxy": "2.12.4",
|
"com.unity.collab-proxy": "2.12.4",
|
||||||
|
|||||||
@ -17,47 +17,12 @@
|
|||||||
},
|
},
|
||||||
"hash": "11836003a5e2ffcb7715ecec7e1fbb9d9cdb5bb8"
|
"hash": "11836003a5e2ffcb7715ecec7e1fbb9d9cdb5bb8"
|
||||||
},
|
},
|
||||||
"com.unity.2d.common": {
|
|
||||||
"version": "14.0.1",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.burst": "1.8.4",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.collections": "2.4.3",
|
|
||||||
"com.unity.mathematics": "1.1.0",
|
|
||||||
"com.unity.modules.animation": "1.0.0",
|
|
||||||
"com.unity.modules.uielements": "1.0.0",
|
|
||||||
"com.unity.modules.imageconversion": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.psdimporter": {
|
|
||||||
"version": "14.0.3",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.common": "14.0.1",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.2d.tilemap": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.sprite": {
|
"com.unity.2d.sprite": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
"com.unity.2d.tilemap": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.tilemap": "1.0.0",
|
|
||||||
"com.unity.modules.uielements": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.ai.navigation": {
|
"com.unity.ai.navigation": {
|
||||||
"version": "2.0.13",
|
"version": "2.0.13",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
@ -141,7 +106,7 @@
|
|||||||
},
|
},
|
||||||
"com.unity.mathematics": {
|
"com.unity.mathematics": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"depth": 2,
|
"depth": 3,
|
||||||
"source": "builtin",
|
"source": "builtin",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,10 +6,7 @@ EditorBuildSettings:
|
|||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Scenes:
|
m_Scenes:
|
||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/_Project/Scenes/Selection Scene.unity
|
path: Assets/Scenes/SampleScene.unity
|
||||||
guid: c8d93f5e005091249906eb8692282a9d
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
- enabled: 1
|
|
||||||
path: Assets/_Project/Scenes/Demo Scene.unity
|
|
||||||
guid: 5436e608397e56d45ae30baac88cdb0b
|
|
||||||
m_configObjects:
|
m_configObjects:
|
||||||
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user