Compare commits
4 Commits
dev
...
leaderboar
Author | SHA1 | Date | |
---|---|---|---|
8e7e5c6ae4 | |||
995eff4781 | |||
39560c1490 | |||
cbdfca5443 |
13
.idea/.idea.AwesomeRunner-/.idea/.gitignore
generated
vendored
13
.idea/.idea.AwesomeRunner-/.idea/.gitignore
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Rider ignored files
|
|
||||||
/projectSettingsUpdater.xml
|
|
||||||
/contentModel.xml
|
|
||||||
/.idea.AwesomeRunner-.iml
|
|
||||||
/modules.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
4
.idea/.idea.AwesomeRunner-/.idea/encodings.xml
generated
4
.idea/.idea.AwesomeRunner-/.idea/encodings.xml
generated
@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
|
||||||
</project>
|
|
8
.idea/.idea.AwesomeRunner-/.idea/indexLayout.xml
generated
8
.idea/.idea.AwesomeRunner-/.idea/indexLayout.xml
generated
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="UserContentModel">
|
|
||||||
<attachedFolders />
|
|
||||||
<explicitIncludes />
|
|
||||||
<explicitExcludes />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
6
.idea/.idea.AwesomeRunner-/.idea/vcs.xml
generated
6
.idea/.idea.AwesomeRunner-/.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
13
.idea/.idea.SAE/.idea/.gitignore
generated
vendored
13
.idea/.idea.SAE/.idea/.gitignore
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Rider ignored files
|
|
||||||
/.idea.SAE.iml
|
|
||||||
/modules.xml
|
|
||||||
/projectSettingsUpdater.xml
|
|
||||||
/contentModel.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
4
.idea/.idea.SAE/.idea/encodings.xml
generated
4
.idea/.idea.SAE/.idea/encodings.xml
generated
@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
|
||||||
</project>
|
|
8
.idea/.idea.SAE/.idea/indexLayout.xml
generated
8
.idea/.idea.SAE/.idea/indexLayout.xml
generated
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="UserContentModel">
|
|
||||||
<attachedFolders />
|
|
||||||
<explicitIncludes />
|
|
||||||
<explicitExcludes />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
6
.idea/.idea.SAE/.idea/vcs.xml
generated
6
.idea/.idea.SAE/.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
8
.idea/indexLayout.xml
generated
8
.idea/indexLayout.xml
generated
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="UserContentModel">
|
|
||||||
<attachedFolders />
|
|
||||||
<explicitIncludes />
|
|
||||||
<explicitExcludes />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
7
.idea/projectSettingsUpdater.xml
generated
7
.idea/projectSettingsUpdater.xml
generated
@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="RiderProjectSettingsUpdater">
|
|
||||||
<option name="singleClickDiffPreview" value="1" />
|
|
||||||
<option name="vcsConfiguration" value="3" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
70
.idea/workspace.xml
generated
70
.idea/workspace.xml
generated
@ -1,70 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="bbce60c9-b020-43bc-ac91-3e747354e409" name="Changes" comment="">
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Scenes/DeathScreen1VS1.unity" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scenes/DeathScreen1VS1.unity" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Sprites/CameraRenderTexture.renderTexture" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Sprites/CameraRenderTexture.renderTexture" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json" beforeDir="false" afterPath="$PROJECT_DIR$/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.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="Git.Settings">
|
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="HighlightingSettingsPerFile">
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/DeathScreen.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/DeathScreen.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/DeathScreen1VS1.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/DeathScreen1VS1.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/DeathScreen1VS1.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/MainMenu.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/Assets/Scenes/MainMenu.unity" root0="SKIP_HIGHLIGHTING" />
|
|
||||||
<setting file="mock://C:/Users/teddy/OneDrive/Documents/BUT3/SAE/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json" root0="FORCE_HIGHLIGHTING" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectColorInfo"><![CDATA[{
|
|
||||||
"associatedIndex": 8
|
|
||||||
}]]></component>
|
|
||||||
<component name="ProjectId" id="2rfdTSaHd8CQV55SaQfRGNTGbwL" />
|
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
|
||||||
<component name="ProjectViewState">
|
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
|
||||||
<option name="showLibraryContents" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
|
||||||
"keyToString": {
|
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
||||||
"git-widget-placeholder": "dev",
|
|
||||||
"node.js.detected.package.eslint": "true",
|
|
||||||
"node.js.detected.package.tslint": "true",
|
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
|
||||||
"nodejs_package_manager_path": "npm",
|
|
||||||
"vue.rearranger.settings.migration": "true"
|
|
||||||
}
|
|
||||||
}]]></component>
|
|
||||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
||||||
<component name="TaskManager">
|
|
||||||
<task active="true" id="Default" summary="Default task">
|
|
||||||
<changelist id="bbce60c9-b020-43bc-ac91-3e747354e409" name="Changes" comment="" />
|
|
||||||
<created>1736954071558</created>
|
|
||||||
<option name="number" value="Default" />
|
|
||||||
<option name="presentableId" value="Default" />
|
|
||||||
<updated>1736954071558</updated>
|
|
||||||
<workItem from="1736954074577" duration="429000" />
|
|
||||||
</task>
|
|
||||||
<servers />
|
|
||||||
</component>
|
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
|
||||||
<option name="version" value="3" />
|
|
||||||
</component>
|
|
||||||
<component name="UnityProjectConfiguration" hasMinimizedUI="false" />
|
|
||||||
<component name="UnityProjectDiscoverer">
|
|
||||||
<option name="unityProjectFolder" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="VcsManagerConfiguration">
|
|
||||||
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
Binary file not shown.
Binary file not shown.
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -51,5 +51,5 @@
|
|||||||
"temp/": true,
|
"temp/": true,
|
||||||
"Temp/": true
|
"Temp/": true
|
||||||
},
|
},
|
||||||
"dotnet.defaultSolution": "AwesomeRunner-.sln"
|
"dotnet.defaultSolution": "AwesomeRunner.sln"
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,108 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!91 &9100000
|
|
||||||
AnimatorController:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: animationend
|
|
||||||
serializedVersion: 5
|
|
||||||
m_AnimatorParameters:
|
|
||||||
- m_Name: Blend
|
|
||||||
m_Type: 1
|
|
||||||
m_DefaultFloat: 0
|
|
||||||
m_DefaultInt: 0
|
|
||||||
m_DefaultBool: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
- m_Name: Run
|
|
||||||
m_Type: 4
|
|
||||||
m_DefaultFloat: 0
|
|
||||||
m_DefaultInt: 0
|
|
||||||
m_DefaultBool: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
- m_Name: Jump
|
|
||||||
m_Type: 4
|
|
||||||
m_DefaultFloat: 0
|
|
||||||
m_DefaultInt: 0
|
|
||||||
m_DefaultBool: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
- m_Name: Dead
|
|
||||||
m_Type: 4
|
|
||||||
m_DefaultFloat: 0
|
|
||||||
m_DefaultInt: 0
|
|
||||||
m_DefaultBool: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
- m_Name: Slide
|
|
||||||
m_Type: 4
|
|
||||||
m_DefaultFloat: 0
|
|
||||||
m_DefaultInt: 0
|
|
||||||
m_DefaultBool: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
- m_Name: Idle
|
|
||||||
m_Type: 4
|
|
||||||
m_DefaultFloat: 0
|
|
||||||
m_DefaultInt: 0
|
|
||||||
m_DefaultBool: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
m_AnimatorLayers:
|
|
||||||
- serializedVersion: 5
|
|
||||||
m_Name: Base Layer
|
|
||||||
m_StateMachine: {fileID: 7459675453670605269}
|
|
||||||
m_Mask: {fileID: 0}
|
|
||||||
m_Motions: []
|
|
||||||
m_Behaviours: []
|
|
||||||
m_BlendingMode: 0
|
|
||||||
m_SyncedLayerIndex: -1
|
|
||||||
m_DefaultWeight: 0
|
|
||||||
m_IKPass: 0
|
|
||||||
m_SyncedLayerAffectsTiming: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
--- !u!1102 &5334629767517593806
|
|
||||||
AnimatorState:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 1
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: a_Idle_Happy
|
|
||||||
m_Speed: 1
|
|
||||||
m_CycleOffset: 0
|
|
||||||
m_Transitions: []
|
|
||||||
m_StateMachineBehaviours: []
|
|
||||||
m_Position: {x: 50, y: 50, z: 0}
|
|
||||||
m_IKOnFeet: 0
|
|
||||||
m_WriteDefaultValues: 0
|
|
||||||
m_Mirror: 0
|
|
||||||
m_SpeedParameterActive: 0
|
|
||||||
m_MirrorParameterActive: 0
|
|
||||||
m_CycleOffsetParameterActive: 0
|
|
||||||
m_TimeParameterActive: 0
|
|
||||||
m_Motion: {fileID: 7400000, guid: e411d29e9f3ed4148a6f9d807e00efcd, type: 2}
|
|
||||||
m_Tag:
|
|
||||||
m_SpeedParameter:
|
|
||||||
m_MirrorParameter:
|
|
||||||
m_CycleOffsetParameter:
|
|
||||||
m_TimeParameter:
|
|
||||||
--- !u!1107 &7459675453670605269
|
|
||||||
AnimatorStateMachine:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 1
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: Base Layer
|
|
||||||
m_ChildStates:
|
|
||||||
- serializedVersion: 1
|
|
||||||
m_State: {fileID: 5334629767517593806}
|
|
||||||
m_Position: {x: 10, y: 120, z: 0}
|
|
||||||
m_ChildStateMachines: []
|
|
||||||
m_AnyStateTransitions: []
|
|
||||||
m_EntryTransitions: []
|
|
||||||
m_StateMachineTransitions: {}
|
|
||||||
m_StateMachineBehaviours: []
|
|
||||||
m_AnyStatePosition: {x: 30, y: 0, z: 0}
|
|
||||||
m_EntryPosition: {x: -230, y: 120, z: 0}
|
|
||||||
m_ExitPosition: {x: 950, y: 170, z: 0}
|
|
||||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
|
||||||
m_DefaultState: {fileID: 5334629767517593806}
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 104b61ba2d831c84e9200f18cdf2cd2f
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 9100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,16 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class DeathScreen1VS1 : MonoBehaviour
|
|
||||||
{
|
|
||||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ee53811d3959d1b4ca9782e0dfc97ccf
|
|
@ -9,8 +9,6 @@ Material:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: m_jammo_metal 1
|
m_Name: m_jammo_metal 1
|
||||||
m_Shader: {fileID: 4800000, guid: 73ef4de7c429719438a73d771100db7c, type: 3}
|
m_Shader: {fileID: 4800000, guid: 73ef4de7c429719438a73d771100db7c, type: 3}
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
m_InvalidKeywords:
|
m_InvalidKeywords:
|
||||||
- _METALLICGLOSSMAP
|
- _METALLICGLOSSMAP
|
||||||
@ -21,7 +19,6 @@ Material:
|
|||||||
m_CustomRenderQueue: -1
|
m_CustomRenderQueue: -1
|
||||||
stringTagMap: {}
|
stringTagMap: {}
|
||||||
disabledShaderPasses: []
|
disabledShaderPasses: []
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
@ -88,4 +85,3 @@ Material:
|
|||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
m_AllowLocking: 1
|
|
||||||
|
@ -2,26 +2,20 @@
|
|||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!21 &2100000
|
--- !u!21 &2100000
|
||||||
Material:
|
Material:
|
||||||
serializedVersion: 8
|
serializedVersion: 6
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: m_jammo_metal
|
m_Name: m_jammo_metal
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_Parent: {fileID: 0}
|
m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords:
|
|
||||||
- _METALLICGLOSSMAP
|
|
||||||
- _NORMALMAP
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
m_LightmapFlags: 4
|
||||||
m_EnableInstancingVariants: 0
|
m_EnableInstancingVariants: 0
|
||||||
m_DoubleSidedGI: 0
|
m_DoubleSidedGI: 0
|
||||||
m_CustomRenderQueue: -1
|
m_CustomRenderQueue: -1
|
||||||
stringTagMap: {}
|
stringTagMap: {}
|
||||||
disabledShaderPasses: []
|
disabledShaderPasses: []
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
@ -61,7 +55,6 @@ Material:
|
|||||||
m_Texture: {fileID: 0}
|
m_Texture: {fileID: 0}
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
m_Floats:
|
||||||
- _BumpScale: 1
|
- _BumpScale: 1
|
||||||
- _Cutoff: 0.5
|
- _Cutoff: 0.5
|
||||||
@ -82,5 +75,3 @@ Material:
|
|||||||
m_Colors:
|
m_Colors:
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
|
@ -2,26 +2,19 @@
|
|||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!21 &2100000
|
--- !u!21 &2100000
|
||||||
Material:
|
Material:
|
||||||
serializedVersion: 8
|
serializedVersion: 6
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInternal: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: comuter_wall
|
m_Name: comuter_wall
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_Parent: {fileID: 0}
|
m_ShaderKeywords: _METALLICGLOSSMAP
|
||||||
m_ModifiedSerializedProperties: 0
|
m_LightmapFlags: 5
|
||||||
m_ValidKeywords:
|
|
||||||
- _EMISSION
|
|
||||||
- _METALLICGLOSSMAP
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 1
|
|
||||||
m_EnableInstancingVariants: 0
|
m_EnableInstancingVariants: 0
|
||||||
m_DoubleSidedGI: 0
|
m_DoubleSidedGI: 0
|
||||||
m_CustomRenderQueue: -1
|
m_CustomRenderQueue: -1
|
||||||
stringTagMap: {}
|
stringTagMap: {}
|
||||||
disabledShaderPasses: []
|
disabledShaderPasses: []
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
@ -61,26 +54,19 @@ Material:
|
|||||||
m_Texture: {fileID: 0}
|
m_Texture: {fileID: 0}
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
m_Floats:
|
||||||
- _BumpScale: 1
|
- _BumpScale: 1
|
||||||
- _Cutoff: 0.5
|
- _Cutoff: 0.5
|
||||||
- _DetailNormalMapScale: 1
|
- _DetailNormalMapScale: 1
|
||||||
- _DstBlend: 0
|
- _DstBlend: 0
|
||||||
- _GlossMapScale: 1
|
|
||||||
- _Glossiness: 0.5
|
- _Glossiness: 0.5
|
||||||
- _GlossyReflections: 1
|
|
||||||
- _Metallic: 0
|
- _Metallic: 0
|
||||||
- _Mode: 0
|
- _Mode: 0
|
||||||
- _OcclusionStrength: 1
|
- _OcclusionStrength: 1
|
||||||
- _Parallax: 0.02
|
- _Parallax: 0.02
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
- _SrcBlend: 1
|
||||||
- _UVSec: 0
|
- _UVSec: 0
|
||||||
- _ZWrite: 1
|
- _ZWrite: 1
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _Color: {r: 0.8, g: 0.8, b: 0.8, a: 1}
|
- _Color: {r: 0.8, g: 0.8, b: 0.8, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
|
@ -2,25 +2,19 @@
|
|||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!21 &2100000
|
--- !u!21 &2100000
|
||||||
Material:
|
Material:
|
||||||
serializedVersion: 8
|
serializedVersion: 6
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInternal: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: No Name
|
m_Name: No Name
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_Parent: {fileID: 0}
|
m_ShaderKeywords:
|
||||||
m_ModifiedSerializedProperties: 0
|
m_LightmapFlags: 5
|
||||||
m_ValidKeywords:
|
|
||||||
- _EMISSION
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 1
|
|
||||||
m_EnableInstancingVariants: 0
|
m_EnableInstancingVariants: 0
|
||||||
m_DoubleSidedGI: 0
|
m_DoubleSidedGI: 0
|
||||||
m_CustomRenderQueue: -1
|
m_CustomRenderQueue: -1
|
||||||
stringTagMap: {}
|
stringTagMap: {}
|
||||||
disabledShaderPasses: []
|
disabledShaderPasses: []
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
@ -60,26 +54,19 @@ Material:
|
|||||||
m_Texture: {fileID: 0}
|
m_Texture: {fileID: 0}
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
m_Floats:
|
||||||
- _BumpScale: 1
|
- _BumpScale: 1
|
||||||
- _Cutoff: 0.5
|
- _Cutoff: 0.5
|
||||||
- _DetailNormalMapScale: 1
|
- _DetailNormalMapScale: 1
|
||||||
- _DstBlend: 0
|
- _DstBlend: 0
|
||||||
- _GlossMapScale: 1
|
|
||||||
- _Glossiness: 0.5
|
- _Glossiness: 0.5
|
||||||
- _GlossyReflections: 1
|
|
||||||
- _Metallic: 0
|
- _Metallic: 0
|
||||||
- _Mode: 0
|
- _Mode: 0
|
||||||
- _OcclusionStrength: 1
|
- _OcclusionStrength: 1
|
||||||
- _Parallax: 0.02
|
- _Parallax: 0.02
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
- _SrcBlend: 1
|
||||||
- _UVSec: 0
|
- _UVSec: 0
|
||||||
- _ZWrite: 1
|
- _ZWrite: 1
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
|
@ -8,8 +8,7 @@ public class laserScript : MonoBehaviour {
|
|||||||
// Use this for initialization
|
// Use this for initialization
|
||||||
void Start () {
|
void Start () {
|
||||||
laserLine = GetComponentInChildren<LineRenderer> ();
|
laserLine = GetComponentInChildren<LineRenderer> ();
|
||||||
laserLine.startWidth = .2f;
|
laserLine.SetWidth (.2f, .2f);
|
||||||
laserLine.endWidth = .2f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: aa7ee8fd100668c43a4a6598a35a3ad6
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,163 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1 &9117726010709451998
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 2262208576908815080}
|
|
||||||
- component: {fileID: 3572880127954793139}
|
|
||||||
- component: {fileID: 6612934893704467973}
|
|
||||||
- component: {fileID: 2619330802336550126}
|
|
||||||
- component: {fileID: 6803980266743182291}
|
|
||||||
- component: {fileID: 6108635676596831665}
|
|
||||||
- component: {fileID: 1187001800563073841}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Coins
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &2262208576908815080
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
|
|
||||||
m_LocalPosition: {x: 0, y: 2, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 0.05, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
|
|
||||||
--- !u!33 &3572880127954793139
|
|
||||||
MeshFilter:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
|
|
||||||
--- !u!23 &6612934893704467973
|
|
||||||
MeshRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
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_RenderingLayerMask: 1
|
|
||||||
m_RendererPriority: 0
|
|
||||||
m_Materials:
|
|
||||||
- {fileID: 2100000, guid: 9fc1d0d62308b2a47839d64bc3a4983d, 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: 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_SortingLayerID: 0
|
|
||||||
m_SortingLayer: 0
|
|
||||||
m_SortingOrder: 0
|
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
|
||||||
--- !u!136 &2619330802336550126
|
|
||||||
CapsuleCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
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: 2
|
|
||||||
m_Radius: 0.5000001
|
|
||||||
m_Height: 2
|
|
||||||
m_Direction: 1
|
|
||||||
m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
|
|
||||||
--- !u!65 &6803980266743182291
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
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.0000001, y: 2.0000005, z: 1.0000005}
|
|
||||||
m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940699}
|
|
||||||
--- !u!114 &6108635676596831665
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: ddaf0a1f90e1c46428ba5f029fd32ad0, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
coinValue: 1
|
|
||||||
--- !u!114 &1187001800563073841
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9117726010709451998}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: ef8880022572d924bbe4f58655a16a6f, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
amplitude: 0.1
|
|
||||||
animationVelocity: {x: 0, y: 1, z: 0}
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b23a39661488b4b4bb909b4285f3f874
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -104,7 +104,7 @@ BoxCollider:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_Size: {x: 2, y: 2, z: 2}
|
m_Size: {x: 2, y: 2, z: 2}
|
||||||
m_Center: {x: 0, y: 0.5, z: 0}
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &6632165759313513218
|
--- !u!114 &6632165759313513218
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -230,8 +230,8 @@ BoxCollider:
|
|||||||
m_ProvidesContacts: 0
|
m_ProvidesContacts: 0
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_Size: {x: 2, y: 1.75, z: 2}
|
m_Size: {x: 2, y: 2, z: 2}
|
||||||
m_Center: {x: 0, y: 2.25, z: 0}
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &-5363852902891024896
|
--- !u!114 &-5363852902891024896
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -245,7 +245,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
<IsOnAllLanes>k__BackingField: 0
|
<IsOnAllLanes>k__BackingField: 0
|
||||||
<IsInevitable>k__BackingField: 0
|
<IsInevitable>k__BackingField: 1
|
||||||
--- !u!4 &4156031263124959724 stripped
|
--- !u!4 &4156031263124959724 stripped
|
||||||
Transform:
|
Transform:
|
||||||
m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: 02c07866f16913044aea6679ce17cfc5, type: 3}
|
m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: 02c07866f16913044aea6679ce17cfc5, type: 3}
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4865203f6c333ec41aa9c857891d9921
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 6e6131461623f7f4e9622a07b5ea2f48
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -24,13 +24,13 @@ Transform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1385490266177085035}
|
m_GameObject: {fileID: 1385490266177085035}
|
||||||
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, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
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: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &3244299530156243158
|
--- !u!114 &3244299530156243158
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -44,5 +44,5 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1290664e863a3d34596917f255587b4c, type: 3}
|
m_Script: {fileID: 11500000, guid: 1290664e863a3d34596917f255587b4c, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
capacity: 10
|
capacity: 30
|
||||||
prefab: {fileID: 6716018880928220119, guid: aa7da947970bb714fa7924d204fe2bdd, type: 3}
|
prefab: {fileID: 6716018880928220119, guid: aa7da947970bb714fa7924d204fe2bdd, type: 3}
|
||||||
|
@ -24,13 +24,13 @@ Transform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 4737509690352194895}
|
m_GameObject: {fileID: 4737509690352194895}
|
||||||
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, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
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: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &6300939898152622968
|
--- !u!114 &6300939898152622968
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -44,5 +44,5 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1290664e863a3d34596917f255587b4c, type: 3}
|
m_Script: {fileID: 11500000, guid: 1290664e863a3d34596917f255587b4c, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
capacity: 10
|
capacity: 20
|
||||||
prefab: {fileID: 6716018880928220119, guid: aa7da947970bb714fa7924d204fe2bdd, type: 3}
|
prefab: {fileID: 6716018880928220119, guid: aa7da947970bb714fa7924d204fe2bdd, type: 3}
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 723c7ecb1f81a8c47a6c3853e476b507
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,48 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1 &7658440756881775109
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 2738643474112209314}
|
|
||||||
- component: {fileID: 8935043373779239955}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: CoinPool
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &2738643474112209314
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7658440756881775109}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
||||||
m_LocalPosition: {x: 3.7201803, y: -0.29014507, z: 29.534254}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &8935043373779239955
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7658440756881775109}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: c4456a434a6301241bcca08c705b96c4, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
capacity: 0
|
|
||||||
prefab: {fileID: 6108635676596831665, guid: b23a39661488b4b4bb909b4285f3f874, type: 3}
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 44cf83f237ca73248933ea3c97149a4a
|
|
||||||
PrefabImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
<<<<<<<< HEAD:Assets/TextMesh Pro/Examples & Extras/Scenes/27 - Double Pass Shader Example.unity.meta
|
|
||||||
guid: 43c23d1fff294aa4b90d180240a2295a
|
guid: 43c23d1fff294aa4b90d180240a2295a
|
||||||
========
|
|
||||||
guid: 9fc0d4010bbf28b4594072e72b8655ab
|
|
||||||
>>>>>>>> 4c350d16a4b31db0659a0e5146e5626a353b2200:Assets/Scenes/DeathScreen.unity.meta
|
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0c8ab113f15a70d4083297e24fb728f0
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 682d64d1d4474994cba4504e7df89dd0
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 72410a9edaee92c4e86511fe51f4aeaf
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f80e925cd90324449923b287b3fb0f5f
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -7,7 +7,7 @@ MonoBehaviour:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 0}
|
m_GameObject: {fileID: 0}
|
||||||
m_Enabled: 0
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 9055f72a604bc3f4ba01bc120f0643d2, type: 3}
|
m_Script: {fileID: 11500000, guid: 9055f72a604bc3f4ba01bc120f0643d2, type: 3}
|
||||||
m_Name: PlayerData
|
m_Name: PlayerData
|
||||||
@ -15,6 +15,4 @@ MonoBehaviour:
|
|||||||
<InvincibilityTime>k__BackingField: 600
|
<InvincibilityTime>k__BackingField: 600
|
||||||
<JumpHeight>k__BackingField: 6
|
<JumpHeight>k__BackingField: 6
|
||||||
<LaneSwitchSpeed>k__BackingField: 20
|
<LaneSwitchSpeed>k__BackingField: 20
|
||||||
<InitialSpeed>k__BackingField: 10
|
<Speed>k__BackingField: 10
|
||||||
<CurrentSpeed>k__BackingField: 401.62177
|
|
||||||
<SpeedAcceleration>k__BackingField: 1
|
|
||||||
|
@ -1,39 +1,13 @@
|
|||||||
using System;
|
using System.Collections;
|
||||||
using System.Collections;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
[CreateAssetMenu(fileName = "PlayerData", menuName = "ScriptableObjects/Player")]
|
[CreateAssetMenu(fileName = "PlayerData", menuName = "ScriptableObjects/Player")]
|
||||||
public sealed class PlayerData : ScriptableObject
|
public class PlayerData : ScriptableObject
|
||||||
{
|
{
|
||||||
// Serialize Fields
|
|
||||||
[field: SerializeField] public int InvincibilityTime { get; private set; }
|
[field: SerializeField] public int InvincibilityTime { get; private set; }
|
||||||
[field: SerializeField] public float JumpHeight { get; private set; }
|
[field: SerializeField] public float JumpHeight { get; private set; }
|
||||||
[field: SerializeField] public float LaneSwitchSpeed { get; private set; }
|
[field: SerializeField] public float LaneSwitchSpeed { get; private set; }
|
||||||
[field: SerializeField] public float InitialSpeed { get; private set; }
|
[field: SerializeField] public float InitialSpeed { get; private set; }
|
||||||
[field: SerializeField] public float CurrentSpeed { get; internal set; }
|
|
||||||
[field: SerializeField] public float SpeedAcceleration { get; private set; }
|
[field: SerializeField] public float SpeedAcceleration { get; private set; }
|
||||||
|
[field: SerializeField] public float CurrentSpeed { get; set; }
|
||||||
// Other attributes
|
|
||||||
private bool onPause = false;
|
|
||||||
|
|
||||||
private void Awake()
|
|
||||||
{
|
|
||||||
CurrentSpeed = InitialSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Reset()
|
|
||||||
{
|
|
||||||
CurrentSpeed = InitialSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update()
|
|
||||||
{
|
|
||||||
if (!onPause)
|
|
||||||
CurrentSpeed += SpeedAcceleration / 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void isPaused(bool isPaused)
|
|
||||||
{
|
|
||||||
onPause = isPaused;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -36,11 +36,11 @@ public class FollowingCamera : MonoBehaviour
|
|||||||
Vector3 moveVector = new Vector3(target.position.x, target.position.y, target.position.z);
|
Vector3 moveVector = new Vector3(target.position.x, target.position.y, target.position.z);
|
||||||
//Quaternion rotationVector = Quaternion.Euler(target.rotation.y, target.rotation.y, defaultTargetRotation.z);
|
//Quaternion rotationVector = Quaternion.Euler(target.rotation.y, target.rotation.y, defaultTargetRotation.z);
|
||||||
//float curveX = GameSession.Instance.Curver.CurveStrengthX;
|
//float curveX = GameSession.Instance.Curver.CurveStrengthX;
|
||||||
camTransform.rotation = target.rotation;
|
//camTransform.rotation = target.rotation;
|
||||||
Vector3 toPos = moveVector + (target.rotation * defaultDistance);
|
Vector3 toPos = moveVector + (target.rotation * defaultDistance);
|
||||||
//Vector3 toPos = target.position + (target.rotation * defaultDistance);
|
//Vector3 toPos = target.position + (target.rotation * defaultDistance);
|
||||||
Vector3 curPos = Vector3.SmoothDamp(camTransform.position, toPos, ref velocity, distanceDamp);
|
Vector3 curPos = Vector3.SmoothDamp(camTransform.position, toPos, ref velocity, distanceDamp);
|
||||||
camTransform.position = curPos;
|
camTransform.position = curPos;
|
||||||
camTransform.LookAt(target, target.up);
|
camTransform.LookAt(camTransform, target.up);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ using UnityEngine;
|
|||||||
public class Coin : PoolingObject<Coin>, ICollectable,IResettable
|
public class Coin : PoolingObject<Coin>, ICollectable,IResettable
|
||||||
{
|
{
|
||||||
[SerializeField] private int coinValue;
|
[SerializeField] private int coinValue;
|
||||||
public int CoinValue => coinValue;
|
|
||||||
|
|
||||||
private SinAnimator sinAnimator;
|
private SinAnimator sinAnimator;
|
||||||
public Renderer Renderer { get; private set; }
|
public Renderer Renderer { get; private set; }
|
||||||
@ -24,9 +23,7 @@ public class Coin : PoolingObject<Coin>, ICollectable,IResettable
|
|||||||
gameObject.SetActive(false);
|
gameObject.SetActive(false);
|
||||||
OnCoinCollected?.Invoke(coinValue);
|
OnCoinCollected?.Invoke(coinValue);
|
||||||
OnCoinDissapeared?.Invoke(this);
|
OnCoinDissapeared?.Invoke(this);
|
||||||
ReturnToPool();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateStartPositionForSinAnimator()
|
public void UpdateStartPositionForSinAnimator()
|
||||||
{
|
{
|
||||||
sinAnimator.UpdateStartPosition();
|
sinAnimator.UpdateStartPosition();
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
namespace Assets.Scripts.GameSession
|
|
||||||
{
|
|
||||||
public class GameResult
|
|
||||||
{
|
|
||||||
public static string MatchResult { get; set; }
|
|
||||||
public static int score { get; set; }
|
|
||||||
public static int coinsEarned { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2ccf940b8a6f4771951a3760a7865928
|
|
||||||
timeCreated: 1739468701
|
|
@ -1,26 +1,20 @@
|
|||||||
using System;
|
using System.Collections;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Assets.Scripts.GameSession;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
[RequireComponent(typeof(WorldCurver))]
|
[RequireComponent(typeof(WorldCurver))]
|
||||||
public class GameSession : MonoBehaviour,IResettable
|
public class GameSession : MonoBehaviour,IResettable
|
||||||
{
|
{
|
||||||
[SerializeField] private Player player1;
|
[SerializeField] private Player currentPlayer;
|
||||||
[SerializeField] [CanBeNull] private Player player2;
|
|
||||||
[SerializeField] private Scoreboard scoreboard;
|
[SerializeField] private Scoreboard scoreboard;
|
||||||
[SerializeField] private bool isDuoMode;
|
|
||||||
[SerializeField] private PlayerData playerData;
|
|
||||||
public static GameSession Instance { get; private set; }
|
public static GameSession Instance { get; private set; }
|
||||||
private WorldCurver Curver { get; set; }
|
public WorldCurver Curver { get; private set; }
|
||||||
private IInputTranslator _player1InputTranslator;
|
private IInputTranslator inputTranslator;
|
||||||
private IInputTranslator _player2InputTranslator;
|
|
||||||
private bool _isSessionPaused = false;
|
private bool isSessionPaused = false;
|
||||||
private bool _isInputAlreadyRestricted = false;
|
private float speedAtPause;
|
||||||
private float _speedAtPause;
|
private bool isInputAlreadyRestricted = false;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
@ -38,13 +32,7 @@ public class GameSession : MonoBehaviour,IResettable
|
|||||||
}
|
}
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
playerData.Update();
|
inputTranslator.Tick();
|
||||||
_player1InputTranslator.Tick();
|
|
||||||
if (isDuoMode)
|
|
||||||
{
|
|
||||||
_player2InputTranslator.Tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
Curver.Tick();
|
Curver.Tick();
|
||||||
// curver.SinCurveX();
|
// curver.SinCurveX();
|
||||||
// Curver.SinCurveY();
|
// Curver.SinCurveY();
|
||||||
@ -53,44 +41,48 @@ public class GameSession : MonoBehaviour,IResettable
|
|||||||
|
|
||||||
private void Init()
|
private void Init()
|
||||||
{
|
{
|
||||||
var player1Holder = new KeyBindingHolder();
|
if (ApplicationUtil.platform == RuntimePlatform.Android || ApplicationUtil.platform == RuntimePlatform.IPhonePlayer)
|
||||||
player1Holder.Init(false);
|
{
|
||||||
_player1InputTranslator = new InputTranslator<KeyBinding>(player1Holder, false);
|
IBindingHolder<TouchBinding> touchHolder = new TouchBindingHolder();
|
||||||
var player2Holder = new KeyBindingHolder();
|
inputTranslator = new InputTranslator<TouchBinding>(touchHolder);
|
||||||
player2Holder.Init(true);
|
}
|
||||||
_player2InputTranslator = new InputTranslator<KeyBinding>(player2Holder, true);
|
else
|
||||||
|
{
|
||||||
playerData.Reset();
|
IBindingHolder<KeyBinding> keyHolder = new KeyBindingHolder();
|
||||||
|
inputTranslator = new InputTranslator<KeyBinding>(keyHolder);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddCommandTranslator(ICommandTranslator translator, bool isPlayer2)
|
public void AddCommandTranslator(ICommandTranslator translator)
|
||||||
{
|
{
|
||||||
if (isPlayer2)
|
inputTranslator.AddCommandTranslator(translator);
|
||||||
{
|
|
||||||
_player2InputTranslator.AddCommandTranslator(translator);
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
_player1InputTranslator.AddCommandTranslator(translator);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void PauseSession(bool isPaused)
|
public void PauseSession(bool isPaused)
|
||||||
{
|
{
|
||||||
playerData.isPaused(isPaused);
|
|
||||||
Time.timeScale = isPaused ? 0 : 1;
|
// Save the speed before pausing the game and restore it while the game resume
|
||||||
if (!_isSessionPaused && _player1InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) && _player2InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) )
|
if (isPaused)
|
||||||
{
|
{
|
||||||
_isInputAlreadyRestricted = true;
|
speedAtPause = currentPlayer.PlayerData.CurrentSpeed;
|
||||||
_isSessionPaused = isPaused;
|
}else{
|
||||||
|
currentPlayer.PlayerData.CurrentSpeed = speedAtPause;
|
||||||
|
}
|
||||||
|
|
||||||
|
Time.timeScale = isPaused ? 0 : 1;
|
||||||
|
if (!isSessionPaused && inputTranslator.IsTranslationResticted(InputConstants.InGameCommands))
|
||||||
|
{
|
||||||
|
isInputAlreadyRestricted = true;
|
||||||
|
isSessionPaused = isPaused;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!_player1InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) && !_player2InputTranslator.IsTranslationResticted(InputConstants.InGameCommands))
|
if (!inputTranslator.IsTranslationResticted(InputConstants.InGameCommands))
|
||||||
{
|
{
|
||||||
_isInputAlreadyRestricted = false;
|
isInputAlreadyRestricted = false;
|
||||||
}
|
}
|
||||||
_isSessionPaused = isPaused;
|
isSessionPaused = isPaused;
|
||||||
if (_isInputAlreadyRestricted)
|
if (isInputAlreadyRestricted)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -99,12 +91,7 @@ public class GameSession : MonoBehaviour,IResettable
|
|||||||
|
|
||||||
public void RestrictInputs(List<ECommand> commands,bool isRestricted)
|
public void RestrictInputs(List<ECommand> commands,bool isRestricted)
|
||||||
{
|
{
|
||||||
_player1InputTranslator.RestictTranslation(commands, isRestricted);
|
inputTranslator.RestictTranslation(commands, isRestricted);
|
||||||
if (isDuoMode)
|
|
||||||
{
|
|
||||||
_player2InputTranslator.RestictTranslation(commands, isRestricted);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateScoreboard(ScoreboardEntry entry)
|
public void UpdateScoreboard(ScoreboardEntry entry)
|
||||||
@ -112,86 +99,44 @@ public class GameSession : MonoBehaviour,IResettable
|
|||||||
scoreboard.AddScoreboardEntry(entry);
|
scoreboard.AddScoreboardEntry(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool isCheckingEquality = false;
|
public void GoToGameScene()
|
||||||
|
|
||||||
public void HandlePlayerDeath(Player deadPlayer)
|
|
||||||
{
|
{
|
||||||
if (isDuoMode)
|
StartCoroutine(LoadGameSceneAsync());
|
||||||
{
|
|
||||||
if (isCheckingEquality) return;
|
|
||||||
|
|
||||||
isCheckingEquality = true;
|
|
||||||
StartCoroutine(CheckForEquality(deadPlayer));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GameResult.score = player1.PlayerStatictics.Score;
|
|
||||||
GameResult.coinsEarned = player1.PlayerStatictics.coinCount;
|
|
||||||
SceneManager.LoadScene("DeathScreen");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator CheckForEquality(Player deadPlayer)
|
private IEnumerator LoadGameSceneAsync()
|
||||||
{
|
{
|
||||||
yield return new WaitForSeconds(0.3f);
|
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("GameScene", LoadSceneMode.Single);
|
||||||
|
asyncLoad.allowSceneActivation = false;
|
||||||
|
|
||||||
if (player1.isDead && player2.isDead)
|
while (!asyncLoad.isDone)
|
||||||
{
|
{
|
||||||
SendResultToDeathScreen1VS1("DRAW");
|
// Indiquer la progression de chargement (0 à 0.9)
|
||||||
}
|
float progress = Mathf.Clamp01(asyncLoad.progress / 0.9f);
|
||||||
else if (player1.isDead)
|
Debug.Log($"Loading progress: {progress * 100}%");
|
||||||
|
|
||||||
|
// Activer la scène lorsqu'elle est prête
|
||||||
|
if (asyncLoad.progress >= 0.9f)
|
||||||
{
|
{
|
||||||
SendResultToDeathScreen1VS1("PLAYER2");
|
asyncLoad.allowSceneActivation = true;
|
||||||
}
|
|
||||||
else if (player2.isDead)
|
|
||||||
{
|
|
||||||
SendResultToDeathScreen1VS1("PLAYER1");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isCheckingEquality = false;
|
yield return null;
|
||||||
}
|
|
||||||
|
|
||||||
private void SendResultToDeathScreen1VS1(string result)
|
|
||||||
{
|
|
||||||
//MatchResult = result;
|
|
||||||
GameResult.score = player1.PlayerStatictics.Score;
|
|
||||||
GameResult.coinsEarned = player1.PlayerStatictics.coinCount;
|
|
||||||
GameResult.MatchResult = result;
|
|
||||||
SceneManager.LoadScene("DeathScreen1VS1");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PausePlayAgain()
|
|
||||||
{
|
|
||||||
if (isDuoMode)
|
|
||||||
{
|
|
||||||
GoToScene.GoToDuoMode();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GoToScene.GoToSoloMode();
|
|
||||||
}
|
}
|
||||||
ResetToDefault();
|
ResetToDefault();
|
||||||
}
|
}
|
||||||
public void PauseBackToMainMenu()
|
|
||||||
|
|
||||||
|
public void GoToMainMenu()
|
||||||
{
|
{
|
||||||
GoToScene.GoToMainMenu();
|
SceneManager.LoadScene("MainMenu", LoadSceneMode.Single);
|
||||||
ResetToDefault();
|
ResetToDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetToDefault()
|
public void ResetToDefault()
|
||||||
{
|
{
|
||||||
PauseSession(false);
|
PauseSession(false);
|
||||||
playerData.Reset();
|
if(currentPlayer !=null)
|
||||||
if(player1 !=null)
|
currentPlayer.ResetToDefault();
|
||||||
player1.ResetToDefault();
|
|
||||||
if (isDuoMode && player2 != null)
|
|
||||||
{
|
|
||||||
player2.ResetToDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerData GetPlayerData()
|
|
||||||
{
|
|
||||||
return this.playerData;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,38 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
|
|
||||||
namespace Assets.Scripts.GameSession
|
|
||||||
{
|
|
||||||
public class GoToScene : MonoBehaviour
|
|
||||||
{
|
|
||||||
public static void GoToSoloMode()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("SoloGameScene", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void GoToDuoMode()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("DuoGameScene", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
public static void GoToMainMenu()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("MainMenu", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
public static void GoToDeathScreenSolo()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("DeathScreen", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
public static void GoToDeathScreen1VS1()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("DeathScreen1VS1", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
public static void GoToSkinMenuPlayer1()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("SkinMenuPlayer1", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
public static void GoToSkinMenuPlayer2()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("SkinMenuPlayer2", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 90560e670cf9430d920225316b227914
|
|
||||||
timeCreated: 1736947730
|
|
@ -8,6 +8,6 @@ using System.Threading.Tasks;
|
|||||||
public interface IBindingHolder<T> where T : IBinding
|
public interface IBindingHolder<T> where T : IBinding
|
||||||
{
|
{
|
||||||
public Dictionary<ECommand, T> InputBindings { get; }
|
public Dictionary<ECommand, T> InputBindings { get; }
|
||||||
public void Init(Boolean isPlayer2);
|
public void Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -11,32 +10,17 @@ public class KeyBindingHolder : IBindingHolder<KeyBinding>
|
|||||||
private readonly Dictionary<ECommand, KeyBinding> DefaultKeyBindings = new Dictionary<ECommand, KeyBinding>
|
private readonly Dictionary<ECommand, KeyBinding> DefaultKeyBindings = new Dictionary<ECommand, KeyBinding>
|
||||||
{
|
{
|
||||||
{ECommand.NONE, new KeyBinding(KeyCode.None)},
|
{ECommand.NONE, new KeyBinding(KeyCode.None)},
|
||||||
{ECommand.DOWN, new KeyBinding(KeyCode.DownArrow)},
|
{ECommand.DOWN, new KeyBinding(KeyCode.DownArrow,KeyCode.S)},
|
||||||
{ECommand.UP, new KeyBinding(KeyCode.UpArrow)},
|
{ECommand.UP, new KeyBinding(KeyCode.UpArrow,KeyCode.W)},
|
||||||
{ECommand.LEFT, new KeyBinding(KeyCode.LeftArrow)},
|
{ECommand.LEFT, new KeyBinding(KeyCode.LeftArrow,KeyCode.A)},
|
||||||
{ECommand.RIGHT, new KeyBinding(KeyCode.RightArrow)},
|
{ECommand.RIGHT, new KeyBinding(KeyCode.RightArrow,KeyCode.D)},
|
||||||
{ECommand.OPEN_SCOREBOARD, new KeyBinding(KeyCode.Tab)},
|
{ECommand.OPEN_SCOREBOARD, new KeyBinding(KeyCode.Tab)},
|
||||||
{ECommand.OPEN_PAUSE_MENU, new KeyBinding(KeyCode.Escape)}
|
{ECommand.OPEN_PAUSE_MENU, new KeyBinding(KeyCode.Escape)}
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly Dictionary<ECommand, KeyBinding> Player2KeyBindings = new Dictionary<ECommand, KeyBinding>
|
public void Init()
|
||||||
{
|
|
||||||
{ECommand.DOWN2, new KeyBinding(KeyCode.S)},
|
|
||||||
{ECommand.UP2, new KeyBinding(KeyCode.Z)},
|
|
||||||
{ECommand.LEFT2, new KeyBinding(KeyCode.Q)},
|
|
||||||
{ECommand.RIGHT2, new KeyBinding(KeyCode.D)},
|
|
||||||
};
|
|
||||||
|
|
||||||
public void Init(Boolean isPlayer2)
|
|
||||||
{
|
{
|
||||||
if (InputBindings == null)
|
if (InputBindings == null)
|
||||||
if (isPlayer2)
|
|
||||||
{
|
|
||||||
InputBindings = Player2KeyBindings;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
InputBindings = DefaultKeyBindings;
|
InputBindings = DefaultKeyBindings;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
24
Assets/Scripts/Input/BindableHolders/TouchBindingHolder.cs
Normal file
24
Assets/Scripts/Input/BindableHolders/TouchBindingHolder.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
||||||
|
public class TouchBindingHolder : IBindingHolder<TouchBinding>
|
||||||
|
{
|
||||||
|
public Dictionary<ECommand, TouchBinding> InputBindings { get; private set; }
|
||||||
|
|
||||||
|
private readonly Dictionary<ECommand, TouchBinding> DefaultTouchBindings = new Dictionary<ECommand, TouchBinding>
|
||||||
|
{
|
||||||
|
{ECommand.NONE, new TouchBinding(ETouchGesture.NONE)},
|
||||||
|
{ECommand.DOWN, new TouchBinding(ETouchGesture.SWIPE_DOWN)},
|
||||||
|
{ECommand.UP, new TouchBinding(ETouchGesture.SWIPE_UP)},
|
||||||
|
{ECommand.LEFT, new TouchBinding(ETouchGesture.SWIPE_LEFT)},
|
||||||
|
{ECommand.RIGHT, new TouchBinding(ETouchGesture.SWIPE_RIGHT)},
|
||||||
|
};
|
||||||
|
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
if (InputBindings == null)
|
||||||
|
InputBindings = DefaultTouchBindings;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23353de203a94c447af7be38973acc1d
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
public enum ECommand
|
public enum ECommand
|
||||||
{
|
{
|
||||||
#region Player1
|
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
LEFT = 1,
|
LEFT = 1,
|
||||||
RIGHT = 2,
|
RIGHT = 2,
|
||||||
@ -9,17 +8,5 @@ public enum ECommand
|
|||||||
DOWN = 4,
|
DOWN = 4,
|
||||||
OPEN_SCOREBOARD = 5,
|
OPEN_SCOREBOARD = 5,
|
||||||
SHOOT = 6,
|
SHOOT = 6,
|
||||||
OPEN_PAUSE_MENU = 7,
|
OPEN_PAUSE_MENU = 7
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Player2
|
|
||||||
LEFT2 = 8,
|
|
||||||
RIGHT2 = 9,
|
|
||||||
UP2 = 10,
|
|
||||||
DOWN2 = 11,
|
|
||||||
OPEN_SCOREBOARD2 = 12,
|
|
||||||
SHOOT2 = 13,
|
|
||||||
OPEN_PAUSE_MENU2 = 14
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
public interface IInputTranslator
|
public interface IInputTranslator
|
||||||
@ -18,11 +17,11 @@ public class InputTranslator<T> : IInputTranslator where T : IBinding
|
|||||||
private List<ICommandTranslator> commandTranslators;
|
private List<ICommandTranslator> commandTranslators;
|
||||||
private IBindingHolder<T> bindingHolder;
|
private IBindingHolder<T> bindingHolder;
|
||||||
|
|
||||||
public InputTranslator(IBindingHolder<T> holder, Boolean isPlayer2)
|
public InputTranslator(IBindingHolder<T> holder)
|
||||||
{
|
{
|
||||||
commandTranslators = new List<ICommandTranslator>();
|
commandTranslators = new List<ICommandTranslator>();
|
||||||
bindingHolder = holder;
|
bindingHolder = holder;
|
||||||
bindingHolder.Init(isPlayer2);
|
bindingHolder.Init();
|
||||||
}
|
}
|
||||||
//public void Init(IBindingHolder<T> holder)
|
//public void Init(IBindingHolder<T> holder)
|
||||||
//{
|
//{
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
using Pools;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Obstacles
|
|
||||||
{
|
|
||||||
[RequireComponent(typeof(BoxCollider))]
|
[RequireComponent(typeof(BoxCollider))]
|
||||||
public class Obstacle : PoolingObject<Obstacle>, IObstacle,IDamageDealer,IResettable
|
public class Obstacle : PoolingObject<Obstacle>, IObstacle,IDamageDealer,IResettable
|
||||||
{
|
{
|
||||||
@ -13,7 +12,6 @@ namespace Obstacles
|
|||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
Collider = GetComponent<BoxCollider>();
|
Collider = GetComponent<BoxCollider>();
|
||||||
OwningPool = FindFirstObjectByType<ObstaclePool>();
|
|
||||||
}
|
}
|
||||||
public void ResetToDefault()
|
public void ResetToDefault()
|
||||||
{
|
{
|
||||||
@ -33,4 +31,3 @@ namespace Obstacles
|
|||||||
target.TakeDamage(amount);
|
target.TakeDamage(amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -6,7 +6,7 @@ public class Pause : MonoBehaviour,ICommandTranslator
|
|||||||
{
|
{
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
GameSession.Instance.AddCommandTranslator(this, false);
|
GameSession.Instance.AddCommandTranslator(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TranslateCommand(ECommand command, PressedState state)
|
public void TranslateCommand(ECommand command, PressedState state)
|
||||||
|
@ -41,8 +41,7 @@ public class Health : MonoBehaviour, IDamageable,IHealable, IResettable
|
|||||||
}
|
}
|
||||||
public void TakeDamage(int amount)
|
public void TakeDamage(int amount)
|
||||||
{
|
{
|
||||||
if (CurrentHealth > 0)
|
if (CurrentHealth > 0){
|
||||||
{
|
|
||||||
CurrentHealth -= amount;
|
CurrentHealth -= amount;
|
||||||
if (CurrentHealth <= 0){
|
if (CurrentHealth <= 0){
|
||||||
CurrentHealth = 0;
|
CurrentHealth = 0;
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
using UnityEngine.Serialization;
|
|
||||||
|
|
||||||
|
|
||||||
[RequireComponent(typeof(CharacterController))]
|
[RequireComponent(typeof(CharacterController))]
|
||||||
@ -22,61 +20,36 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
|
|
||||||
private Animator animator;
|
private Animator animator;
|
||||||
[SerializeField] private AnimationCurve jumpDeltaYCurve;
|
[SerializeField] private AnimationCurve jumpDeltaYCurve;
|
||||||
|
public AnimationCurve JumpDeltaYCurve { get { return jumpDeltaYCurve; } }
|
||||||
public AnimationCurve JumpDeltaYCurve
|
|
||||||
{
|
|
||||||
get { return jumpDeltaYCurve; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerAnimator PlayerAnimator { get; private set; }
|
public PlayerAnimator PlayerAnimator { get; private set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region PlayerComponents
|
#region PlayerComponents
|
||||||
|
|
||||||
[SerializeField] internal PlayerData playerData;
|
[SerializeField] private PlayerData playerData;
|
||||||
|
|
||||||
public IDamageable PlayerHealth { get; private set; }
|
public IDamageable PlayerHealth { get; private set; }
|
||||||
public Statistics PlayerStatictics { get; private set; }
|
public Statistics PlayerStatictics { get; private set; }
|
||||||
|
public PlayerData PlayerData { get { return playerData; } }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region MovementControl
|
#region MovementControl
|
||||||
|
|
||||||
[SerializeField] private LaneSystem laneSystem;
|
[SerializeField] private LaneSystem laneSystem;
|
||||||
|
public LaneSystem LaneSystem { get { return laneSystem; } private set { laneSystem = value; } }
|
||||||
public LaneSystem LaneSystem
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return laneSystem;
|
|
||||||
}
|
|
||||||
private set
|
|
||||||
{
|
|
||||||
laneSystem = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public CharacterController CharacterController { get; private set; }
|
public CharacterController CharacterController { get; private set; }
|
||||||
public PlayerCollider PlayerCollider { get; private set; }
|
public PlayerCollider PlayerCollider { get; private set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Sounds
|
|
||||||
public AudioSource JumpSound;
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public bool IsInvincible { get; private set; }
|
public bool IsInvincible { get; private set; }
|
||||||
public float InvincibilityTime { get; private set; } //PLAYER DATA ScriptableObject
|
public float InvincibilityTime { get; private set; } //PLAYER DATA ScriptableObject
|
||||||
[SerializeField] private Boolean isPlayer2;
|
|
||||||
[SerializeField] private Boolean isPlaying1VS1;
|
|
||||||
public bool isDead = false;
|
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
playerData = GameSession.Instance.GetPlayerData();
|
GameSession.Instance.AddCommandTranslator(this);
|
||||||
Debug.Log("Player Awake : " + this);
|
|
||||||
GameSession.Instance.AddCommandTranslator(this, isPlayer2);
|
|
||||||
animator = GetComponent<Animator>();
|
animator = GetComponent<Animator>();
|
||||||
if (animator)
|
if (animator)
|
||||||
PlayerAnimator = new PlayerAnimator(animator);
|
PlayerAnimator = new PlayerAnimator(animator);
|
||||||
@ -86,34 +59,32 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
PlayerStatictics = GetComponent<Statistics>();
|
PlayerStatictics = GetComponent<Statistics>();
|
||||||
PlayerStateMachine = new PlayerStateMachine(this);
|
PlayerStateMachine = new PlayerStateMachine(this);
|
||||||
InvincibilityTime = playerData.InvincibilityTime;
|
InvincibilityTime = playerData.InvincibilityTime;
|
||||||
playerData.CurrentSpeed = playerData.InitialSpeed;
|
|
||||||
Debug.Log("Player Awake END");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
PlayerHealth.OnOutOfHealth += Die;
|
PlayerHealth.OnOutOfHealth += Die;
|
||||||
}
|
}
|
||||||
|
// private void OnDisable()
|
||||||
|
// {
|
||||||
|
// PlayerHealth.OnOutOfHealth -= Die;
|
||||||
|
// }
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerStartingIdleState);
|
PlayerStateMachine.SetState(PlayerStateMachine.PlayerStartingIdleState);
|
||||||
JumpSound.GetComponent<AudioSource>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
playerData.CurrentSpeed += playerData.SpeedAcceleration / 1000;
|
playerData.CurrentSpeed += playerData.SpeedAcceleration / 100;
|
||||||
|
// Add smthg to manage the animator speed
|
||||||
PlayerStateMachine.Tick();
|
PlayerStateMachine.Tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
{
|
{
|
||||||
PlayerStateMachine.FixedTick();
|
PlayerStateMachine.FixedTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float PendingAdditionalOffset { get; private set; }
|
public float PendingAdditionalOffset { get; private set; }
|
||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
private void OnTriggerEnter(Collider other)
|
||||||
{
|
{
|
||||||
if (other.TryGetComponent(out IDamageDealer damageDealer)) //switch..case
|
if (other.TryGetComponent(out IDamageDealer damageDealer)) //switch..case
|
||||||
@ -126,10 +97,8 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
{
|
{
|
||||||
damageDealer.DealDamage(component, damageAmount);
|
damageDealer.DealDamage(component, damageAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
StartCoroutine(GrantInvincibility());
|
StartCoroutine(GrantInvincibility());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other.TryGetComponent(out IObstacle obstacle)) //switch..case
|
if (other.TryGetComponent(out IObstacle obstacle)) //switch..case
|
||||||
{
|
{
|
||||||
obstacle.Impact();
|
obstacle.Impact();
|
||||||
@ -137,21 +106,16 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
else if (other.TryGetComponent(out ICollectable collectable))
|
else if (other.TryGetComponent(out ICollectable collectable))
|
||||||
{
|
{
|
||||||
collectable.Collect();
|
collectable.Collect();
|
||||||
|
|
||||||
if (other.TryGetComponent(out Coin coin))
|
|
||||||
{
|
|
||||||
PlayerStatictics.AddScore(coin.CoinValue);
|
|
||||||
coin.gameObject.SetActive(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Die()
|
private void Die()
|
||||||
{
|
{
|
||||||
isDead = true;
|
PlayerData.CurrentSpeed = PlayerData.InitialSpeed;
|
||||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerDeadState);
|
PlayerStateMachine.SetState(PlayerStateMachine.PlayerDeadState);
|
||||||
GameSession.Instance.UpdateScoreboard(new ScoreboardEntry(name,PlayerStatictics.Score));
|
GameSession.Instance.UpdateScoreboard(new ScoreboardEntry(name,PlayerStatictics.Score));
|
||||||
GameSession.Instance.HandlePlayerDeath(this); // Informe GameSession qu'un joueur est mort
|
|
||||||
|
SceneManager.LoadScene("DeathScreen");
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerator GrantInvincibility()
|
public IEnumerator GrantInvincibility()
|
||||||
@ -160,21 +124,19 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
yield return new WaitForSeconds(InvincibilityTime);
|
yield return new WaitForSeconds(InvincibilityTime);
|
||||||
IsInvincible = false;
|
IsInvincible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReloadAnimator()
|
private void ReloadAnimator()
|
||||||
{
|
{
|
||||||
if (animator)
|
if (animator)
|
||||||
PlayerAnimator = new PlayerAnimator(animator);
|
PlayerAnimator = new PlayerAnimator(animator);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetToDefault()
|
public void ResetToDefault()
|
||||||
{
|
{
|
||||||
|
PlayerData.CurrentSpeed = PlayerData.InitialSpeed;
|
||||||
PlayerStateMachine.SetState(null);
|
PlayerStateMachine.SetState(null);
|
||||||
PlayerStatictics.ResetToDefault();
|
PlayerStatictics.ResetToDefault();
|
||||||
LaneSystem.ResetToDefault();
|
LaneSystem.ResetToDefault();
|
||||||
Physics.SyncTransforms();
|
Physics.SyncTransforms();
|
||||||
ReloadAnimator();
|
ReloadAnimator();
|
||||||
playerData.CurrentSpeed = playerData.InitialSpeed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TranslateCommand(ECommand command, PressedState state)
|
public void TranslateCommand(ECommand command, PressedState state)
|
||||||
@ -184,20 +146,15 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
switch (command)
|
switch (command)
|
||||||
{
|
{
|
||||||
case ECommand.RIGHT:
|
case ECommand.RIGHT:
|
||||||
case ECommand.RIGHT2:
|
|
||||||
PlayerStateMachine.IncreaseTargetLane();
|
PlayerStateMachine.IncreaseTargetLane();
|
||||||
JumpSound.Play();
|
|
||||||
break;
|
break;
|
||||||
case ECommand.LEFT:
|
case ECommand.LEFT:
|
||||||
case ECommand.LEFT2:
|
|
||||||
PlayerStateMachine.DecreaseTargetLane();
|
PlayerStateMachine.DecreaseTargetLane();
|
||||||
break;
|
break;
|
||||||
case ECommand.UP:
|
case ECommand.UP:
|
||||||
case ECommand.UP2:
|
|
||||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerJumpState);
|
PlayerStateMachine.SetState(PlayerStateMachine.PlayerJumpState);
|
||||||
break;
|
break;
|
||||||
case ECommand.DOWN:
|
case ECommand.DOWN:
|
||||||
case ECommand.DOWN2:
|
|
||||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerSlideState);
|
PlayerStateMachine.SetState(PlayerStateMachine.PlayerSlideState);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -205,5 +162,4 @@ public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,38 +1,39 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class PlayerAnimator
|
public class PlayerAnimator
|
||||||
{
|
{
|
||||||
private readonly Animator _animator;
|
private Animator animator;
|
||||||
private readonly int _runningHash = Animator.StringToHash("Run");
|
private int runningHash = Animator.StringToHash("Run");
|
||||||
private readonly int _deadHash = Animator.StringToHash("Dead");
|
private int deadHash = Animator.StringToHash("Dead");
|
||||||
private readonly int _jumpHash = Animator.StringToHash("Jump");
|
private int jumpHash = Animator.StringToHash("Jump");
|
||||||
private readonly int _slideHash = Animator.StringToHash("Slide");
|
private int slideHash = Animator.StringToHash("Slide");
|
||||||
private readonly int _idleHash = Animator.StringToHash("Idle");
|
private int idleHash = Animator.StringToHash("Idle");
|
||||||
|
|
||||||
public PlayerAnimator(Animator animator)
|
public PlayerAnimator(Animator animator)
|
||||||
{
|
{
|
||||||
if (animator)
|
if (animator)
|
||||||
this._animator = animator;
|
this.animator = animator;
|
||||||
}
|
}
|
||||||
public void SetRunState(bool isRunning)
|
public void SetRunState(bool isRunning)
|
||||||
{
|
{
|
||||||
_animator?.SetBool(_runningHash, isRunning);
|
animator?.SetBool(runningHash, isRunning);
|
||||||
}
|
}
|
||||||
public void SetJumpState(bool isJumping)
|
public void SetJumpState(bool isJumping)
|
||||||
{
|
{
|
||||||
_animator?.SetBool(_jumpHash, isJumping);
|
animator?.SetBool(jumpHash, isJumping);
|
||||||
}
|
}
|
||||||
public void SetDeadState(bool isDead)
|
public void SetDeadState(bool isDead)
|
||||||
{
|
{
|
||||||
_animator?.SetBool(_deadHash, isDead);
|
animator?.SetBool(deadHash, isDead);
|
||||||
}
|
}
|
||||||
public void SetSlideState(bool isSliding)
|
public void SetSlideState(bool isSliding)
|
||||||
{
|
{
|
||||||
_animator?.SetBool(_slideHash, isSliding);
|
animator?.SetBool(slideHash, isSliding);
|
||||||
}
|
}
|
||||||
public void SetIdleState(bool isIdle)
|
public void SetIdleState(bool isIdle)
|
||||||
{
|
{
|
||||||
if(_animator){}
|
animator?.SetBool(idleHash, isIdle);
|
||||||
_animator?.SetBool(_idleHash, isIdle);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ public abstract class MovingState : PlayerState
|
|||||||
private float speed; //SO
|
private float speed; //SO
|
||||||
private float laneSwitchSpeed; //SO
|
private float laneSwitchSpeed; //SO
|
||||||
protected const float gravity = -9.8f;
|
protected const float gravity = -9.8f;
|
||||||
private float invincibilityTime => playerSM.playerData.InvincibilityTime;
|
private float invincibilityTime => playerSM.PlayerData.InvincibilityTime;
|
||||||
public MovingState(PlayerStateMachine playerStateMachine) : base(playerStateMachine)
|
public MovingState(PlayerStateMachine playerStateMachine) : base(playerStateMachine)
|
||||||
{
|
{
|
||||||
this.playerSM = playerStateMachine;
|
this.playerSM = playerStateMachine;
|
||||||
@ -22,6 +22,7 @@ public abstract class MovingState : PlayerState
|
|||||||
public override void Tick()
|
public override void Tick()
|
||||||
{
|
{
|
||||||
speed = playerData.CurrentSpeed;
|
speed = playerData.CurrentSpeed;
|
||||||
|
//HandleDirection();
|
||||||
playerSM.HorizontalDeltaPosition = playerSM.PlayerTransform.forward * speed * Time.deltaTime ;
|
playerSM.HorizontalDeltaPosition = playerSM.PlayerTransform.forward * speed * Time.deltaTime ;
|
||||||
playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.forward * speed * Time.deltaTime;
|
playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.forward * speed * Time.deltaTime;
|
||||||
playerSM.UpdateDistance(playerSM.HorizontalDeltaPosition.z); //вынести в контроллер
|
playerSM.UpdateDistance(playerSM.HorizontalDeltaPosition.z); //вынести в контроллер
|
||||||
@ -37,6 +38,28 @@ public abstract class MovingState : PlayerState
|
|||||||
playerSM.VerticalDeltaPosition += gravity * Time.deltaTime;
|
playerSM.VerticalDeltaPosition += gravity * Time.deltaTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//private void HandleDirection()
|
||||||
|
//{
|
||||||
|
// switch (playerSM.InputDirection)
|
||||||
|
// {
|
||||||
|
// case EInputDirection.RIGHT:
|
||||||
|
// playerSM.IncreaseTargetLane();
|
||||||
|
// break;
|
||||||
|
// case EInputDirection.LEFT:
|
||||||
|
// playerSM.DecreaseTargetLane();
|
||||||
|
// break;
|
||||||
|
// case EInputDirection.UP:
|
||||||
|
// playerSM.SetState(playerSM.PlayerJumpState);
|
||||||
|
// break;
|
||||||
|
// case EInputDirection.DOWN:
|
||||||
|
// playerSM.SetState(playerSM.PlayerSlideState);
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
public void SwitchLane()
|
public void SwitchLane()
|
||||||
{
|
{
|
||||||
float sidewaysPos = playerTransform.localPosition.x;
|
float sidewaysPos = playerTransform.localPosition.x;
|
||||||
@ -60,6 +83,9 @@ public abstract class MovingState : PlayerState
|
|||||||
playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.right * diffX.x;
|
playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.right * diffX.x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ public abstract class PlayerState : State<Player>
|
|||||||
public PlayerState(PlayerStateMachine playerStateMachine)
|
public PlayerState(PlayerStateMachine playerStateMachine)
|
||||||
{
|
{
|
||||||
playerSM = playerStateMachine;
|
playerSM = playerStateMachine;
|
||||||
playerData = playerStateMachine.playerData;
|
playerData = playerStateMachine.PlayerData;
|
||||||
playerTransform = playerStateMachine.PlayerTransform;
|
playerTransform = playerStateMachine.PlayerTransform;
|
||||||
}
|
}
|
||||||
public override void Tick()
|
public override void Tick()
|
||||||
|
@ -4,13 +4,14 @@ using UnityEngine.Animations.Rigging;
|
|||||||
public class PlayerStateMachine : StateMachine<Player>
|
public class PlayerStateMachine : StateMachine<Player>
|
||||||
{
|
{
|
||||||
private Player player;
|
private Player player;
|
||||||
public PlayerData playerData;
|
private PlayerData playerData;
|
||||||
private Transform playerTransform;
|
private Transform playerTransform;
|
||||||
public Transform PlayerTransform { get { return playerTransform; } }
|
public Transform PlayerTransform { get { return playerTransform; } }
|
||||||
|
public PlayerData PlayerData { get { return playerData; } }
|
||||||
public PlayerStateMachine(Player player)
|
public PlayerStateMachine(Player player)
|
||||||
{
|
{
|
||||||
this.player = player;
|
this.player = player;
|
||||||
playerData = GameSession.Instance.GetPlayerData();
|
playerData = player.PlayerData;
|
||||||
playerTransform = player.transform;
|
playerTransform = player.transform;
|
||||||
InitStates();
|
InitStates();
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,17 @@ using System;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Serialization;
|
|
||||||
|
|
||||||
public class Statistics : MonoBehaviour,IResettable
|
public class Statistics : MonoBehaviour,IResettable
|
||||||
{
|
{
|
||||||
private float distance;
|
private float distance;
|
||||||
public int coinCount;
|
private int coinCount;
|
||||||
private int coinMultiplier;
|
private int coinMultiplier;
|
||||||
public int Score { get; private set; }
|
public int Score { get; private set; }
|
||||||
public event Action<int> OnCoinCountChanged = delegate { };
|
public event Action<int> OnCoinCountChanged = delegate { };
|
||||||
public event Action<float> OnDistanceChanged = delegate { };
|
public event Action<float> OnDistanceChanged = delegate { };
|
||||||
public event Action<int> OnScoreCalculated = delegate { };
|
public event Action<int> OnScoreCalculated = delegate { };
|
||||||
[FormerlySerializedAs("PlayerHUD")] [SerializeField] private PlayerHUDView playerHUD;
|
[SerializeField] private PlayerHUDView PlayerHUD;
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
ResetToDefault();
|
ResetToDefault();
|
||||||
@ -44,7 +43,7 @@ public class Statistics : MonoBehaviour,IResettable
|
|||||||
{
|
{
|
||||||
Score = Mathf.FloorToInt(coinCount * coinMultiplier + distance);
|
Score = Mathf.FloorToInt(coinCount * coinMultiplier + distance);
|
||||||
OnScoreCalculated?.Invoke(Score);
|
OnScoreCalculated?.Invoke(Score);
|
||||||
playerHUD.UpdateScore(Score.ToString());
|
PlayerHUD.UpdateScore(Score.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetToDefault()
|
public void ResetToDefault()
|
||||||
@ -55,12 +54,4 @@ public class Statistics : MonoBehaviour,IResettable
|
|||||||
coinMultiplier = 1;
|
coinMultiplier = 1;
|
||||||
//gameOverPopUp.gameObject.SetActive(false);
|
//gameOverPopUp.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddScore(int amount)
|
|
||||||
{
|
|
||||||
Score += amount;
|
|
||||||
OnScoreCalculated?.Invoke(Score);
|
|
||||||
playerHUD.UpdateScore(Score.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
namespace Pools
|
public class CoinPool : BasePool<Coin>
|
||||||
{
|
|
||||||
public sealed class CoinPool : BasePool<Coin>
|
|
||||||
{}
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
using Obstacles;
|
|
||||||
|
|
||||||
namespace Pools
|
namespace Pools
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -1,29 +1,28 @@
|
|||||||
using Pools;
|
using Pools;
|
||||||
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class ChunkGenerator : MonoBehaviour
|
public class ChunkGenerator : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] private LaneSystem LaneSystem;
|
[SerializeField] private LaneSystem LaneSystem;
|
||||||
[SerializeField] private CoinPool coinPool;
|
public CoinPool CoinPool { get; private set; }
|
||||||
[field: SerializeField] public List<ObstaclePool> ObstaclePools { get; private set; }
|
[field: SerializeField] public List<ObstaclePool> ObstaclePools { get; private set; }
|
||||||
|
private bool isFirstChunk = true;
|
||||||
private bool _isFirstChunk = true;
|
|
||||||
public Chunk Generate(Chunk chunkToFill)
|
public Chunk Generate(Chunk chunkToFill)
|
||||||
{
|
{
|
||||||
if (_isFirstChunk)
|
if (isFirstChunk)
|
||||||
{
|
{
|
||||||
_isFirstChunk = false;
|
isFirstChunk = false;
|
||||||
return chunkToFill;
|
return chunkToFill;
|
||||||
}
|
}
|
||||||
if (!ObstaclePools.IsEmpty())
|
if (ObstaclePools.IsEmpty())
|
||||||
{
|
return chunkToFill;
|
||||||
var obstaclePool = ObstaclePools.GetRandomElement();
|
var obstaclePool = ObstaclePools.GetRandomElement();
|
||||||
var obstacle = obstaclePool.Spawn();
|
var obstacle = obstaclePool.Spawn();
|
||||||
chunkToFill.Obstacles.Add(obstacle);
|
chunkToFill.Obstacles.Add(obstacle);
|
||||||
obstacle.transform.SetParent(chunkToFill.transform, true);
|
obstacle.transform.SetParent(chunkToFill.transform, true);
|
||||||
obstacle.transform.localPosition = chunkToFill.Grid.GetRandomPosition();
|
obstacle.transform.localPosition = chunkToFill.Grid.GetRandomPosition();
|
||||||
|
|
||||||
if (obstacle.IsOnAllLanes)
|
if (obstacle.IsOnAllLanes)
|
||||||
{
|
{
|
||||||
obstacle.transform.localPosition = new Vector3(
|
obstacle.transform.localPosition = new Vector3(
|
||||||
@ -32,40 +31,6 @@ public class ChunkGenerator : MonoBehaviour
|
|||||||
transform.localPosition.z
|
transform.localPosition.z
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Coin coin = coinPool.Spawn();
|
|
||||||
chunkToFill.Coins.Add(coin);
|
|
||||||
coin.transform.SetParent(chunkToFill.transform, true);
|
|
||||||
Vector3 randomPosition;
|
|
||||||
bool isPositionValid = false;
|
|
||||||
int laneIndex = Random.Range(0, LaneSystem.LaneCount);
|
|
||||||
randomPosition = new Vector3(
|
|
||||||
laneIndex * LaneSystem.LaneWidth,
|
|
||||||
chunkToFill.Grid.GetRandomPosition().y + 1.0f,
|
|
||||||
chunkToFill.Grid.GetRandomPosition().z
|
|
||||||
);
|
|
||||||
while (!isPositionValid)
|
|
||||||
{
|
|
||||||
isPositionValid = true;
|
|
||||||
foreach (var obstacle in chunkToFill.Obstacles)
|
|
||||||
{
|
|
||||||
if (Vector3.Distance(randomPosition, obstacle.transform.localPosition) < 1.0f)
|
|
||||||
{
|
|
||||||
isPositionValid = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!isPositionValid)
|
|
||||||
{
|
|
||||||
randomPosition = new Vector3(
|
|
||||||
laneIndex * LaneSystem.LaneWidth,
|
|
||||||
chunkToFill.Grid.GetRandomPosition().y + 1.0f,
|
|
||||||
chunkToFill.Grid.GetRandomPosition().z
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
coin.transform.localPosition = randomPosition;
|
|
||||||
coin.UpdateStartPositionForSinAnimator();
|
|
||||||
return chunkToFill;
|
return chunkToFill;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Obstacles;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
[RequireComponent(typeof(BoxCollider))]
|
[RequireComponent(typeof(BoxCollider))]
|
||||||
@ -38,7 +37,6 @@ public abstract class Chunk : PoolingObject<Chunk>, IResettable
|
|||||||
transform.localPosition = Vector3.zero;
|
transform.localPosition = Vector3.zero;
|
||||||
transform.position = Vector3.zero;
|
transform.position = Vector3.zero;
|
||||||
transform.rotation = Quaternion.identity;
|
transform.rotation = Quaternion.identity;
|
||||||
Coins.Clear();
|
|
||||||
}
|
}
|
||||||
private void OnTriggerExit(Collider other)
|
private void OnTriggerExit(Collider other)
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,6 @@ public class LaneSystem : MonoBehaviour,IResettable
|
|||||||
[field: SerializeField] public float LaneWidth { get; private set; }
|
[field: SerializeField] public float LaneWidth { get; private set; }
|
||||||
|
|
||||||
[SerializeField] private int laneCount;
|
[SerializeField] private int laneCount;
|
||||||
public int LaneCount => laneCount;
|
|
||||||
public List<int> Lanes { get; private set; }
|
public List<int> Lanes { get; private set; }
|
||||||
public float CurrentPosition { get; private set; }
|
public float CurrentPosition { get; private set; }
|
||||||
public float TargetPosition { get; set; }
|
public float TargetPosition { get; set; }
|
||||||
|
@ -1,136 +1,92 @@
|
|||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Networking;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class ScoreboardEntriesTable
|
public class ScoreboardEntriesTable
|
||||||
{
|
{
|
||||||
public List<ScoreboardEntry> listeScore;
|
public ScoreboardEntriesTable(List<ScoreboardEntry> entries)
|
||||||
|
|
||||||
public ScoreboardEntriesTable()
|
|
||||||
{
|
{
|
||||||
listeScore = new List<ScoreboardEntry>();
|
this.entries = entries;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public class Scoreboard : MonoBehaviour
|
|
||||||
{
|
|
||||||
private string apiUrl = "https://awesomerunner.lagaudiere.uk/score";
|
|
||||||
public List<ScoreboardEntry> entries = new List<ScoreboardEntry>();
|
public List<ScoreboardEntry> entries = new List<ScoreboardEntry>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Scoreboard : MonoBehaviour, ICommandTranslator
|
||||||
|
{
|
||||||
|
[SerializeField] private ScoreboardView scoreboardView;
|
||||||
|
[SerializeField] private int maxEntries;
|
||||||
|
private List<ScoreboardEntry> entries = new List<ScoreboardEntry>();
|
||||||
|
|
||||||
public event Action<ScoreboardEntry> OnEntryAdded;
|
public event Action<ScoreboardEntry> OnEntryAdded;
|
||||||
|
|
||||||
[SerializeField] private ScoreboardView scoreboardView;
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
StartCoroutine(GetScoreboard());
|
GameSession.Instance.AddCommandTranslator(this);
|
||||||
}
|
string jsonScoreboardEntries = PlayerPrefs.GetString("ScoreboardEntriesTableTest"); //Binary file
|
||||||
private IEnumerator GetScoreboard()
|
ScoreboardEntriesTable entriesTable = JsonUtility.FromJson<ScoreboardEntriesTable>(jsonScoreboardEntries);
|
||||||
|
if (entriesTable == null)
|
||||||
|
return;
|
||||||
|
if (entriesTable.entries == null)
|
||||||
|
return;
|
||||||
|
for (int i = 0; i < entriesTable.entries.Count; i++)
|
||||||
{
|
{
|
||||||
Debug.Log("Fetching scoreboard...");
|
entries.Add(entriesTable.entries[i]);
|
||||||
|
OnEntryAdded?.Invoke(entriesTable.entries[i]);
|
||||||
|
}
|
||||||
|
|
||||||
using (UnityWebRequest request = UnityWebRequest.Get(apiUrl))
|
// Sort scores descending then creates cards (invert this order cause issues)
|
||||||
|
entries.Sort((x, y) => y.Score.CompareTo(x.Score));
|
||||||
|
scoreboardView.AddEntries(entries.GetRange(0, maxEntries));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddScoreboardEntry(string entryName, int entryScore)
|
||||||
{
|
{
|
||||||
yield return request.SendWebRequest();
|
ScoreboardEntry entry = new ScoreboardEntry(entryName, entryScore);
|
||||||
|
entries.Add(entry);
|
||||||
|
OnEntryAdded?.Invoke(entry);
|
||||||
|
}
|
||||||
|
|
||||||
if (request.result == UnityWebRequest.Result.Success)
|
public void SortScoreboardEntriesByHighscore(List<ScoreboardEntry> entries)
|
||||||
{
|
{
|
||||||
string json = request.downloadHandler.text;
|
entries.Sort((x,y) => y.Score.CompareTo(x.Score));
|
||||||
Debug.Log("Received JSON: " + json);
|
}
|
||||||
|
|
||||||
// Désérialiser directement en un tableau
|
public void SortScoreboardCardsDatasByHighscore(List<PlayerScoreboardCardData> scoreboardCardDatas)
|
||||||
ScoreboardEntry[] scoreboardEntriesArray = JsonHelper.FromJson<ScoreboardEntry>(json);
|
|
||||||
|
|
||||||
if (scoreboardEntriesArray != null)
|
|
||||||
{
|
{
|
||||||
entries = new List<ScoreboardEntry>(scoreboardEntriesArray);
|
scoreboardCardDatas.Sort((x, y) => y.playerScore.CompareTo(x.playerScore));
|
||||||
SortScoreboardEntriesByHighscore(entries);
|
|
||||||
UpdateScoreboardView();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.LogError("Erreur lors de la récupération du scoreboard : " + request.error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void AddScoreboardEntry(ScoreboardEntry entry)
|
public void AddScoreboardEntry(ScoreboardEntry entry)
|
||||||
{
|
{
|
||||||
entries.Add(entry);
|
entries.Add(entry);
|
||||||
SortScoreboardEntriesByHighscore(entries);
|
|
||||||
UpdateScoreboardView();
|
|
||||||
StartCoroutine(PostScoreboardEntry(entry));
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator PostScoreboardEntry(ScoreboardEntry entry)
|
|
||||||
{
|
|
||||||
string json = JsonUtility.ToJson(entry);
|
|
||||||
using (UnityWebRequest request = new UnityWebRequest(apiUrl, "POST"))
|
|
||||||
{
|
|
||||||
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(json);
|
|
||||||
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
|
|
||||||
request.downloadHandler = new DownloadHandlerBuffer();
|
|
||||||
request.SetRequestHeader("Content-Type", "application/json");
|
|
||||||
|
|
||||||
yield return request.SendWebRequest();
|
|
||||||
|
|
||||||
if (request.result == UnityWebRequest.Result.Success)
|
|
||||||
{
|
|
||||||
Debug.Log("Score ajouté avec succès !");
|
|
||||||
OnEntryAdded?.Invoke(entry);
|
OnEntryAdded?.Invoke(entry);
|
||||||
}
|
SaveScoreboardEntriesTable();
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.LogError("Erreur lors de l'ajout du score : " + request.error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void SortScoreboardEntriesByHighscore(List<ScoreboardEntry> entries)
|
|
||||||
{
|
|
||||||
entries.Sort((x, y) => y.score.CompareTo(x.score));
|
|
||||||
}
|
|
||||||
private void UpdateScoreboardView()
|
|
||||||
{
|
|
||||||
Debug.Log("Updating scoreboard view...");
|
|
||||||
|
|
||||||
List<PlayerScoreboardCardData> scoreboardCardDatas = new List<PlayerScoreboardCardData>();
|
|
||||||
|
|
||||||
foreach (var entry in entries)
|
|
||||||
{
|
|
||||||
OnEntryAdded?.Invoke(entry);
|
|
||||||
scoreboardCardDatas.Add(new PlayerScoreboardCardData(entry.pseudo, entry.score.ToString()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
scoreboardView.AddPlayerCards(scoreboardCardDatas);
|
public void SaveScoreboardEntriesTable()
|
||||||
}
|
{
|
||||||
|
ScoreboardEntriesTable scoreboardEntriesTable = new ScoreboardEntriesTable(entries);
|
||||||
|
string jsonScoreboardEntries = JsonUtility.ToJson(scoreboardEntriesTable);
|
||||||
|
PlayerPrefs.SetString("ScoreboardEntriesTableTest", jsonScoreboardEntries);
|
||||||
|
PlayerPrefs.Save();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class JsonHelper
|
public void TranslateCommand(ECommand command, PressedState state)
|
||||||
{
|
{
|
||||||
public static T[] FromJson<T>(string json)
|
switch (command)
|
||||||
{
|
{
|
||||||
string wrappedJson = "{\"items\":" + json + "}";
|
case ECommand.OPEN_SCOREBOARD:
|
||||||
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(wrappedJson);
|
if (state.IsPressed == true)
|
||||||
return wrapper.items;
|
scoreboardView.Show(true);
|
||||||
}
|
if (state.IsReleased == true)
|
||||||
|
scoreboardView.Show(false);
|
||||||
[System.Serializable]
|
break;
|
||||||
private class Wrapper<T>
|
default:
|
||||||
{
|
scoreboardView.Show(false);
|
||||||
public T[] items;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class ScoreboardEntriesWrapper
|
|
||||||
{
|
|
||||||
public ScoreboardEntry[] listeScore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -6,13 +5,13 @@ using UnityEngine;
|
|||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class ScoreboardEntry
|
public class ScoreboardEntry
|
||||||
{
|
{
|
||||||
public string pseudo;
|
[SerializeField] private float score;
|
||||||
public int score;
|
[SerializeField] private string name;
|
||||||
|
public float Score { get { return score; } private set { score = value; } }
|
||||||
public ScoreboardEntry(string pseudo, int score)
|
public string Name { get { return name; } private set { name = value; } }
|
||||||
|
public ScoreboardEntry(string name,float score)
|
||||||
{
|
{
|
||||||
this.pseudo = pseudo;
|
this.name = name;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a87de00688705474c882c4db176e76cf
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,33 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
public class MenuManager : MonoBehaviour
|
|
||||||
{
|
|
||||||
public Image menuImage; // L'image affichée dans le menu
|
|
||||||
public Sprite[] menuSprites; // Tableau des 9 images de menu
|
|
||||||
|
|
||||||
private int player1Skin;
|
|
||||||
private int player2Skin;
|
|
||||||
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
player1Skin = PlayerPrefs.GetInt("SelectedSkin_Player1", 0);
|
|
||||||
player2Skin = PlayerPrefs.GetInt("SelectedSkin_Player2", 0);
|
|
||||||
UpdateMenuImage();
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateMenuImage()
|
|
||||||
{
|
|
||||||
int imageIndex = GetMenuImageIndex(player1Skin, player2Skin);
|
|
||||||
|
|
||||||
if (imageIndex >= 0 && imageIndex < menuSprites.Length)
|
|
||||||
{
|
|
||||||
menuImage.sprite = menuSprites[imageIndex];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int GetMenuImageIndex(int skin1, int skin2)
|
|
||||||
{
|
|
||||||
return skin1 * 3 + skin2; // Adapter selon ton nombre de skins
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 73a49fe834731374cbc6b8886a79c0f1
|
|
@ -1,26 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class PlayerSkinManager : MonoBehaviour
|
|
||||||
{
|
|
||||||
public SkinnedMeshRenderer[] bodyParts; // Liste des renderers
|
|
||||||
public Material[] skins; // Liste des matériaux (à remplir dans l'Inspector)
|
|
||||||
public string playerId; // Identifiant unique du joueur
|
|
||||||
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
// Charger le skin sélectionné pour ce joueur spécifique
|
|
||||||
int selectedSkin = PlayerPrefs.GetInt($"SelectedSkin_{playerId}", 0);
|
|
||||||
ApplySkin(selectedSkin);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ApplySkin(int index)
|
|
||||||
{
|
|
||||||
if (index >= 0 && index < skins.Length)
|
|
||||||
{
|
|
||||||
foreach (var part in bodyParts) // Appliquer à chaque partie du corps
|
|
||||||
{
|
|
||||||
part.material = skins[index];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: aa943b55701d5e245bcdc37e137a1e73
|
|
@ -1,13 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class SkinSelector : MonoBehaviour
|
|
||||||
{
|
|
||||||
public string playerId; // Identifiant unique du joueur
|
|
||||||
|
|
||||||
public void SelectSkin(int skinIndex)
|
|
||||||
{
|
|
||||||
// Sauvegarder l'index du skin choisi pour ce joueur spécifique
|
|
||||||
PlayerPrefs.SetInt($"SelectedSkin_{playerId}", skinIndex);
|
|
||||||
PlayerPrefs.Save();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 21b477373147aaf4a81c8bf75f8984a5
|
|
@ -1,62 +0,0 @@
|
|||||||
using Assets.Scripts.GameSession;
|
|
||||||
using TMPro;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
namespace UI.Views
|
|
||||||
{
|
|
||||||
public class DeathScreen1VS1 : MonoBehaviour
|
|
||||||
{
|
|
||||||
public TMP_Text Joueur1Text;
|
|
||||||
public TMP_Text Joueur2Text;
|
|
||||||
public TMP_Text CoinsText;
|
|
||||||
public TMP_Text ScoreText;
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(GameResult.MatchResult))
|
|
||||||
{
|
|
||||||
switch (GameResult.MatchResult)
|
|
||||||
{
|
|
||||||
case "PLAYER1":
|
|
||||||
if(Joueur2Text != null)
|
|
||||||
Joueur1Text.text = "WINNER !";
|
|
||||||
if(Joueur2Text != null)
|
|
||||||
Joueur2Text.text = "LOSER !";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "PLAYER2":
|
|
||||||
if(Joueur2Text != null )
|
|
||||||
Joueur2Text.text = "WINNER !";
|
|
||||||
if(Joueur2Text != null)
|
|
||||||
Joueur1Text.text = "LOSER !";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "DRAW":
|
|
||||||
if(Joueur1Text != null)
|
|
||||||
Joueur1Text.text = "Draw";
|
|
||||||
if(Joueur2Text != null)
|
|
||||||
Joueur2Text.text = "Draw";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
CoinsText.text = GameResult.coinsEarned.ToString();
|
|
||||||
ScoreText.text = GameResult.score.ToString() + "M";
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RestartGame()
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("DuoGameScene");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void QuitGame()
|
|
||||||
{
|
|
||||||
Application.Quit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 80d0e44a44be4982a77850a10cbae2f9
|
|
||||||
timeCreated: 1736867806
|
|
@ -26,12 +26,12 @@ public class PausedView : BaseView
|
|||||||
|
|
||||||
mainMenuButton.onClick.AddListener(() =>
|
mainMenuButton.onClick.AddListener(() =>
|
||||||
{
|
{
|
||||||
GameSession.Instance.PauseBackToMainMenu();
|
GameSession.Instance.GoToMainMenu();
|
||||||
});
|
});
|
||||||
|
|
||||||
restartButton.onClick.AddListener(() =>
|
restartButton.onClick.AddListener(() =>
|
||||||
{
|
{
|
||||||
GameSession.Instance.PausePlayAgain();
|
GameSession.Instance.GoToGameScene();
|
||||||
});
|
});
|
||||||
base.Init();
|
base.Init();
|
||||||
}
|
}
|
||||||
|
@ -21,37 +21,31 @@ public class ScoreboardView : BaseView
|
|||||||
}
|
}
|
||||||
public void AddPlayerCards(List<PlayerScoreboardCardData> cardsData)
|
public void AddPlayerCards(List<PlayerScoreboardCardData> cardsData)
|
||||||
{
|
{
|
||||||
Debug.Log("Adding " + cardsData.Count + " player cards.");
|
|
||||||
|
|
||||||
foreach (var cardData in cardsData)
|
foreach (var cardData in cardsData)
|
||||||
{
|
{
|
||||||
Debug.Log("Card Data: " + cardData.playerName + " - " + cardData.playerScore);
|
|
||||||
AddPlayerCard(cardData);
|
AddPlayerCard(cardData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void AddEntries(List<ScoreboardEntry> entries)
|
||||||
|
{
|
||||||
|
int rank = 1;
|
||||||
|
foreach (var entry in entries)
|
||||||
|
{
|
||||||
|
AddPlayerCard(new PlayerScoreboardCardData(rank + ".\t" + entry.Name, entry.Score.ToString()));
|
||||||
|
rank++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void AddPlayerCard(PlayerScoreboardCardData cardData)
|
private void AddPlayerCard(PlayerScoreboardCardData cardData)
|
||||||
{
|
{
|
||||||
if (layoutGroup == null)
|
//if (playerCards.ContainsKey(cardData.playerName))
|
||||||
{
|
// return;
|
||||||
Debug.LogError("layoutGroup is not assigned!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerScoreboardCard playerScoreboardCard = Instantiate(cardPrefab);
|
PlayerScoreboardCard playerScoreboardCard = Instantiate(cardPrefab);
|
||||||
playerScoreboardCard.transform.SetParent(layoutGroup.transform, false);
|
playerScoreboardCard.transform.SetParent(layoutGroup.transform, false);
|
||||||
playerScoreboardCard.UpdateCard(cardData);
|
playerScoreboardCard.UpdateCard(cardData);
|
||||||
|
|
||||||
Debug.Log("Player card created for: " + cardData.playerName);
|
|
||||||
|
|
||||||
playerCards.Add(playerScoreboardCard);
|
playerCards.Add(playerScoreboardCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void RemovePlayerCard(string cardTag)
|
public void RemovePlayerCard(string cardTag)
|
||||||
{
|
{
|
||||||
//if (playerCards.ContainsKey(cardTag))
|
//if (playerCards.ContainsKey(cardTag))
|
||||||
|
140
Assets/Scripts/Utils/CubemapTextureBuilder.cs
Normal file
140
Assets/Scripts/Utils/CubemapTextureBuilder.cs
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System.Linq;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
public class CubemapTextureBuilder : EditorWindow
|
||||||
|
{
|
||||||
|
[MenuItem("Tools/Cubemap Builder")]
|
||||||
|
public static void OpenWindow()
|
||||||
|
{
|
||||||
|
GetWindow<CubemapTextureBuilder>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Texture2D[] textures = new Texture2D[6];
|
||||||
|
string[] labels = new string[] {
|
||||||
|
"Right", "Left",
|
||||||
|
"Top", "Bottom",
|
||||||
|
"Front", "Back"
|
||||||
|
};
|
||||||
|
|
||||||
|
TextureFormat[] HDRFormats = new TextureFormat[] {
|
||||||
|
TextureFormat.ASTC_HDR_10x10 ,
|
||||||
|
TextureFormat.ASTC_HDR_12x12 ,
|
||||||
|
TextureFormat.ASTC_HDR_4x4 ,
|
||||||
|
TextureFormat.ASTC_HDR_5x5 ,
|
||||||
|
TextureFormat.ASTC_HDR_6x6 ,
|
||||||
|
TextureFormat.ASTC_HDR_8x8 ,
|
||||||
|
TextureFormat.BC6H ,
|
||||||
|
TextureFormat.RGBAFloat ,
|
||||||
|
TextureFormat.RGBAHalf
|
||||||
|
};
|
||||||
|
|
||||||
|
Vector2Int[] placementRects = new Vector2Int[]
|
||||||
|
{
|
||||||
|
new Vector2Int(2, 1),
|
||||||
|
new Vector2Int(0, 1),
|
||||||
|
new Vector2Int(1, 2),
|
||||||
|
new Vector2Int(1, 0),
|
||||||
|
new Vector2Int(1, 1),
|
||||||
|
new Vector2Int(3, 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
textures[i] = EditorGUILayout.ObjectField(labels[i], textures[i], typeof(Texture2D), false) as Texture2D;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Build Cubemap"))
|
||||||
|
{
|
||||||
|
// Missing Texture
|
||||||
|
if (textures.Any(t => t == null))
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayDialog("Cubemap Builder Error", "One or more texture is missing.", "Ok");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get size
|
||||||
|
var size = textures[0].width;
|
||||||
|
|
||||||
|
// Not all of the same size or square
|
||||||
|
if (textures.Any(t => (t.width != size) || (t.height != size)))
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayDialog("Cubemap Builder Error", "All the textures need to be the same size and square.", "Ok");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var isHDR = HDRFormats.Any(f => f == textures[0].format);
|
||||||
|
var texturePaths = textures.Select(t => AssetDatabase.GetAssetPath(t)).ToArray();
|
||||||
|
|
||||||
|
// Should be ok, ask for the file path.
|
||||||
|
var path = EditorUtility.SaveFilePanel("Save Cubemap", Path.GetDirectoryName(texturePaths[0]), "Cubemap", isHDR ? "exr" : "png");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(path)) return;
|
||||||
|
|
||||||
|
// Save the readable flag to restore it afterwards
|
||||||
|
var readableFlags = textures.Select(t => t.isReadable).ToArray();
|
||||||
|
|
||||||
|
// Get the importer and mark the textures as readable
|
||||||
|
var importers = texturePaths.Select(p => TextureImporter.GetAtPath(p) as TextureImporter).ToArray();
|
||||||
|
|
||||||
|
foreach (var importer in importers)
|
||||||
|
{
|
||||||
|
importer.isReadable = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
foreach (var p in texturePaths)
|
||||||
|
{
|
||||||
|
AssetDatabase.ImportAsset(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build the cubemap texture
|
||||||
|
var cubeTexture = new Texture2D(size * 4, size * 3, isHDR ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false);
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
cubeTexture.SetPixels(placementRects[i].x * size, placementRects[i].y * size, size, size, textures[i].GetPixels(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
cubeTexture.Apply(false);
|
||||||
|
|
||||||
|
// Save the texture to the specified path, and destroy the temporary object
|
||||||
|
var bytes = isHDR ? cubeTexture.EncodeToEXR() : cubeTexture.EncodeToPNG();
|
||||||
|
|
||||||
|
File.WriteAllBytes(path, bytes);
|
||||||
|
|
||||||
|
DestroyImmediate(cubeTexture);
|
||||||
|
|
||||||
|
// Reset the read flags, and reimport everything
|
||||||
|
for (var i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
importers[i].isReadable = readableFlags[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
path = path.Remove(0, Application.dataPath.Length - 6);
|
||||||
|
|
||||||
|
AssetDatabase.ImportAsset(path);
|
||||||
|
|
||||||
|
var cubeImporter = AssetImporter.GetAtPath(path) as TextureImporter;
|
||||||
|
cubeImporter.textureShape = TextureImporterShape.TextureCube;
|
||||||
|
cubeImporter.sRGBTexture = false;
|
||||||
|
cubeImporter.generateCubemap = TextureImporterGenerateCubemap.FullCubemap;
|
||||||
|
|
||||||
|
foreach (var p in texturePaths)
|
||||||
|
{
|
||||||
|
AssetDatabase.ImportAsset(p);
|
||||||
|
}
|
||||||
|
AssetDatabase.ImportAsset(path);
|
||||||
|
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Scripts/Utils/CubemapTextureBuilder.cs.meta
Normal file
11
Assets/Scripts/Utils/CubemapTextureBuilder.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f7b00d918e7b13c4c8823278d24d708a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,4 +1,3 @@
|
|||||||
using Assets.Scripts.GameSession;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
@ -21,6 +20,6 @@ public class RestartButton : MonoBehaviour
|
|||||||
|
|
||||||
public void RestartGame()
|
public void RestartGame()
|
||||||
{
|
{
|
||||||
GoToScene.GoToSoloMode();
|
SceneManager.LoadScene("GameScene");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 7a6cd05b162829143bc4b5dad38146f6
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
BIN
Assets/Sounds/Trailer Action Cinematic by Infraction [No Copyright Music] ⧸ Galactic.wav
(Stored with Git LFS)
BIN
Assets/Sounds/Trailer Action Cinematic by Infraction [No Copyright Music] ⧸ Galactic.wav
(Stored with Git LFS)
Binary file not shown.
@ -1,23 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ddf8fb13b61f8474d89b050db1febfc6
|
|
||||||
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:
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user