Compare commits
34 Commits
speedAccel
...
dev
Author | SHA1 | Date | |
---|---|---|---|
75614e4bc8 | |||
e570e8018d | |||
1e3ecf0342 | |||
fdccf955bf | |||
![]() |
21a93ce751 | ||
0dbe96c0c3 | |||
f949377c46 | |||
cda263839d | |||
fa16eaa0cc | |||
5a58064e4d | |||
15a847cbde | |||
ef6ed85e52 | |||
aa0cd27d87 | |||
f36578c429 | |||
75c890766c | |||
8ca5097604 | |||
be419b5c78 | |||
ced8078398 | |||
![]() |
2b8dec8ba7 | ||
![]() |
06af055344 | ||
![]() |
b3a2d8b1e6 | ||
![]() |
3b1774515b | ||
a9b626b86e | |||
2d5bf6002f | |||
![]() |
27e4584d88 | ||
fc7914f4c5 | |||
9401b9fc8a | |||
08338d6dc7 | |||
2bf911a312 | |||
f47def84dd | |||
47d6adf479 | |||
e5f6f9fa54 | |||
2898130a82 | |||
ee95dd043f |
13
.idea/.idea.AwesomeRunner-/.idea/.gitignore
generated
vendored
Normal file
13
.idea/.idea.AwesomeRunner-/.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# 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
Normal file
4
.idea/.idea.AwesomeRunner-/.idea/encodings.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<?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
Normal file
8
.idea/.idea.AwesomeRunner-/.idea/indexLayout.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?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
Normal file
6
.idea/.idea.AwesomeRunner-/.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?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
Normal file
13
.idea/.idea.SAE/.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# 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
Normal file
4
.idea/.idea.SAE/.idea/encodings.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<?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
Normal file
8
.idea/.idea.SAE/.idea/indexLayout.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?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
Normal file
6
.idea/.idea.SAE/.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
8
.idea/indexLayout.xml
generated
Normal file
8
.idea/indexLayout.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
7
.idea/projectSettingsUpdater.xml
generated
Normal file
7
.idea/projectSettingsUpdater.xml
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?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
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?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
Normal file
70
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,70 @@
|
||||
<?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
|
||||
},
|
||||
"dotnet.defaultSolution": "AwesomeRunner.sln"
|
||||
"dotnet.defaultSolution": "AwesomeRunner-.sln"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
108
Assets/Animations/animationend.controller
Normal file
108
Assets/Animations/animationend.controller
Normal file
@ -0,0 +1,108 @@
|
||||
%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}
|
8
Assets/Animations/animationend.controller.meta
Normal file
8
Assets/Animations/animationend.controller.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 104b61ba2d831c84e9200f18cdf2cd2f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 9100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
16
Assets/DeathScreen1VS1.cs
Normal file
16
Assets/DeathScreen1VS1.cs
Normal file
@ -0,0 +1,16 @@
|
||||
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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
2
Assets/DeathScreen1VS1.cs.meta
Normal file
2
Assets/DeathScreen1VS1.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ee53811d3959d1b4ca9782e0dfc97ccf
|
@ -9,6 +9,8 @@ Material:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: m_jammo_metal 1
|
||||
m_Shader: {fileID: 4800000, guid: 73ef4de7c429719438a73d771100db7c, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords:
|
||||
- _METALLICGLOSSMAP
|
||||
@ -19,6 +21,7 @@ Material:
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
@ -85,3 +88,4 @@ Material:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
@ -2,20 +2,26 @@
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: m_jammo_metal
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _METALLICGLOSSMAP
|
||||
- _NORMALMAP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
@ -55,6 +61,7 @@ Material:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
@ -75,3 +82,5 @@ Material:
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
@ -2,19 +2,26 @@
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: comuter_wall
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: _METALLICGLOSSMAP
|
||||
m_LightmapFlags: 5
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _EMISSION
|
||||
- _METALLICGLOSSMAP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
@ -54,19 +61,26 @@ Material:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 0.8, g: 0.8, b: 0.8, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
@ -2,19 +2,25 @@
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: No Name
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 5
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _EMISSION
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
@ -54,19 +60,26 @@ Material:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
@ -8,7 +8,8 @@ public class laserScript : MonoBehaviour {
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
laserLine = GetComponentInChildren<LineRenderer> ();
|
||||
laserLine.SetWidth (.2f, .2f);
|
||||
laserLine.startWidth = .2f;
|
||||
laserLine.endWidth = .2f;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
|
8
Assets/Prefabs/Coins.meta
Normal file
8
Assets/Prefabs/Coins.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa7ee8fd100668c43a4a6598a35a3ad6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
163
Assets/Prefabs/Coins/Coins.prefab
Normal file
163
Assets/Prefabs/Coins/Coins.prefab
Normal file
@ -0,0 +1,163 @@
|
||||
%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}
|
7
Assets/Prefabs/Coins/Coins.prefab.meta
Normal file
7
Assets/Prefabs/Coins/Coins.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b23a39661488b4b4bb909b4285f3f874
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -104,7 +104,7 @@ BoxCollider:
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 2, y: 2, z: 2}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
m_Center: {x: 0, y: 0.5, z: 0}
|
||||
--- !u!114 &6632165759313513218
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -230,8 +230,8 @@ BoxCollider:
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 2, y: 2, z: 2}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
m_Size: {x: 2, y: 1.75, z: 2}
|
||||
m_Center: {x: 0, y: 2.25, z: 0}
|
||||
--- !u!114 &-5363852902891024896
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -245,7 +245,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
<IsOnAllLanes>k__BackingField: 0
|
||||
<IsInevitable>k__BackingField: 1
|
||||
<IsInevitable>k__BackingField: 0
|
||||
--- !u!4 &4156031263124959724 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: 02c07866f16913044aea6679ce17cfc5, type: 3}
|
||||
|
File diff suppressed because it is too large
Load Diff
5799
Assets/Prefabs/Player2.prefab
Normal file
5799
Assets/Prefabs/Player2.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Prefabs/Player2.prefab.meta
Normal file
7
Assets/Prefabs/Player2.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4865203f6c333ec41aa9c857891d9921
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
5799
Assets/Prefabs/Player3.prefab
Normal file
5799
Assets/Prefabs/Player3.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Prefabs/Player3.prefab.meta
Normal file
7
Assets/Prefabs/Player3.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e6131461623f7f4e9622a07b5ea2f48
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -24,13 +24,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1385490266177085035}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &3244299530156243158
|
||||
MonoBehaviour:
|
||||
@ -44,5 +44,5 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 1290664e863a3d34596917f255587b4c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
capacity: 30
|
||||
capacity: 10
|
||||
prefab: {fileID: 6716018880928220119, guid: aa7da947970bb714fa7924d204fe2bdd, type: 3}
|
||||
|
@ -24,13 +24,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4737509690352194895}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6300939898152622968
|
||||
MonoBehaviour:
|
||||
@ -44,5 +44,5 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 1290664e863a3d34596917f255587b4c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
capacity: 20
|
||||
capacity: 10
|
||||
prefab: {fileID: 6716018880928220119, guid: aa7da947970bb714fa7924d204fe2bdd, type: 3}
|
||||
|
8
Assets/Resources.meta
Normal file
8
Assets/Resources.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 723c7ecb1f81a8c47a6c3853e476b507
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
48
Assets/Scenes/CoinPool.prefab
Normal file
48
Assets/Scenes/CoinPool.prefab
Normal file
@ -0,0 +1,48 @@
|
||||
%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}
|
7
Assets/Scenes/CoinPool.prefab.meta
Normal file
7
Assets/Scenes/CoinPool.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44cf83f237ca73248933ea3c97149a4a
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
2375
Assets/Scenes/DeathScreen1VS1.unity
Normal file
2375
Assets/Scenes/DeathScreen1VS1.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/DeathScreen1VS1.unity.meta
Normal file
7
Assets/Scenes/DeathScreen1VS1.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c8ab113f15a70d4083297e24fb728f0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
5892
Assets/Scenes/DuoGameScene.unity
Normal file
5892
Assets/Scenes/DuoGameScene.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/DuoGameScene.unity.meta
Normal file
7
Assets/Scenes/DuoGameScene.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 682d64d1d4474994cba4504e7df89dd0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
1183
Assets/Scenes/SkinMenuPlayer1.unity
Normal file
1183
Assets/Scenes/SkinMenuPlayer1.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/SkinMenuPlayer1.unity.meta
Normal file
7
Assets/Scenes/SkinMenuPlayer1.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 72410a9edaee92c4e86511fe51f4aeaf
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
1183
Assets/Scenes/SkinMenuPlayer2.unity
Normal file
1183
Assets/Scenes/SkinMenuPlayer2.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/SkinMenuPlayer2.unity.meta
Normal file
7
Assets/Scenes/SkinMenuPlayer2.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f80e925cd90324449923b287b3fb0f5f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ MonoBehaviour:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_Enabled: 0
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9055f72a604bc3f4ba01bc120f0643d2, type: 3}
|
||||
m_Name: PlayerData
|
||||
@ -15,4 +15,6 @@ MonoBehaviour:
|
||||
<InvincibilityTime>k__BackingField: 600
|
||||
<JumpHeight>k__BackingField: 6
|
||||
<LaneSwitchSpeed>k__BackingField: 20
|
||||
<Speed>k__BackingField: 10
|
||||
<InitialSpeed>k__BackingField: 10
|
||||
<CurrentSpeed>k__BackingField: 401.62177
|
||||
<SpeedAcceleration>k__BackingField: 1
|
||||
|
@ -1,11 +1,39 @@
|
||||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(fileName = "PlayerData", menuName = "ScriptableObjects/Player")]
|
||||
public class PlayerData : ScriptableObject
|
||||
public sealed class PlayerData : ScriptableObject
|
||||
{
|
||||
[field: SerializeField] public int InvincibilityTime { get; private set; }
|
||||
// Serialize Fields
|
||||
[field: SerializeField] public int InvincibilityTime { get; private set; }
|
||||
[field: SerializeField] public float JumpHeight { get; private set; }
|
||||
[field: SerializeField] public float LaneSwitchSpeed { get; private set; }
|
||||
[field: SerializeField] public float Speed { get; 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; }
|
||||
|
||||
// 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);
|
||||
//Quaternion rotationVector = Quaternion.Euler(target.rotation.y, target.rotation.y, defaultTargetRotation.z);
|
||||
//float curveX = GameSession.Instance.Curver.CurveStrengthX;
|
||||
//camTransform.rotation = target.rotation;
|
||||
camTransform.rotation = target.rotation;
|
||||
Vector3 toPos = moveVector + (target.rotation * defaultDistance);
|
||||
//Vector3 toPos = target.position + (target.rotation * defaultDistance);
|
||||
Vector3 curPos = Vector3.SmoothDamp(camTransform.position, toPos, ref velocity, distanceDamp);
|
||||
camTransform.position = curPos;
|
||||
camTransform.LookAt(camTransform, target.up);
|
||||
camTransform.LookAt(target, target.up);
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ using UnityEngine;
|
||||
public class Coin : PoolingObject<Coin>, ICollectable,IResettable
|
||||
{
|
||||
[SerializeField] private int coinValue;
|
||||
public int CoinValue => coinValue;
|
||||
|
||||
private SinAnimator sinAnimator;
|
||||
public Renderer Renderer { get; private set; }
|
||||
@ -23,7 +24,9 @@ public class Coin : PoolingObject<Coin>, ICollectable,IResettable
|
||||
gameObject.SetActive(false);
|
||||
OnCoinCollected?.Invoke(coinValue);
|
||||
OnCoinDissapeared?.Invoke(this);
|
||||
ReturnToPool();
|
||||
}
|
||||
|
||||
public void UpdateStartPositionForSinAnimator()
|
||||
{
|
||||
sinAnimator.UpdateStartPosition();
|
||||
|
9
Assets/Scripts/GameSession/GameResult.cs
Normal file
9
Assets/Scripts/GameSession/GameResult.cs
Normal file
@ -0,0 +1,9 @@
|
||||
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; }
|
||||
}
|
||||
}
|
3
Assets/Scripts/GameSession/GameResult.cs.meta
Normal file
3
Assets/Scripts/GameSession/GameResult.cs.meta
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2ccf940b8a6f4771951a3760a7865928
|
||||
timeCreated: 1739468701
|
@ -1,19 +1,26 @@
|
||||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Assets.Scripts.GameSession;
|
||||
using JetBrains.Annotations;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
[RequireComponent(typeof(WorldCurver))]
|
||||
public class GameSession : MonoBehaviour,IResettable
|
||||
{
|
||||
[SerializeField] private Player currentPlayer;
|
||||
[SerializeField] private Player player1;
|
||||
[SerializeField] [CanBeNull] private Player player2;
|
||||
[SerializeField] private Scoreboard scoreboard;
|
||||
public static GameSession Instance { get; private set; }
|
||||
public WorldCurver Curver { get; private set; }
|
||||
private IInputTranslator inputTranslator;
|
||||
|
||||
private bool isSessionPaused = false;
|
||||
private bool isInputAlreadyRestricted = false;
|
||||
[SerializeField] private bool isDuoMode;
|
||||
[SerializeField] private PlayerData playerData;
|
||||
public static GameSession Instance { get; private set; }
|
||||
private WorldCurver Curver { get; set; }
|
||||
private IInputTranslator _player1InputTranslator;
|
||||
private IInputTranslator _player2InputTranslator;
|
||||
private bool _isSessionPaused = false;
|
||||
private bool _isInputAlreadyRestricted = false;
|
||||
private float _speedAtPause;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
@ -31,48 +38,59 @@ public class GameSession : MonoBehaviour,IResettable
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
inputTranslator.Tick();
|
||||
playerData.Update();
|
||||
_player1InputTranslator.Tick();
|
||||
if (isDuoMode)
|
||||
{
|
||||
_player2InputTranslator.Tick();
|
||||
}
|
||||
|
||||
Curver.Tick();
|
||||
// curver.SinCurveX();
|
||||
// Curver.SinCurveY();
|
||||
// curver.SinCurveX();
|
||||
// Curver.SinCurveY();
|
||||
//Curver.TurnWorldToLeft();
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
if (ApplicationUtil.platform == RuntimePlatform.Android || ApplicationUtil.platform == RuntimePlatform.IPhonePlayer)
|
||||
{
|
||||
IBindingHolder<TouchBinding> touchHolder = new TouchBindingHolder();
|
||||
inputTranslator = new InputTranslator<TouchBinding>(touchHolder);
|
||||
}
|
||||
else
|
||||
{
|
||||
IBindingHolder<KeyBinding> keyHolder = new KeyBindingHolder();
|
||||
inputTranslator = new InputTranslator<KeyBinding>(keyHolder);
|
||||
}
|
||||
var player1Holder = new KeyBindingHolder();
|
||||
player1Holder.Init(false);
|
||||
_player1InputTranslator = new InputTranslator<KeyBinding>(player1Holder, false);
|
||||
var player2Holder = new KeyBindingHolder();
|
||||
player2Holder.Init(true);
|
||||
_player2InputTranslator = new InputTranslator<KeyBinding>(player2Holder, true);
|
||||
|
||||
playerData.Reset();
|
||||
}
|
||||
|
||||
public void AddCommandTranslator(ICommandTranslator translator)
|
||||
public void AddCommandTranslator(ICommandTranslator translator, bool isPlayer2)
|
||||
{
|
||||
inputTranslator.AddCommandTranslator(translator);
|
||||
if (isPlayer2)
|
||||
{
|
||||
_player2InputTranslator.AddCommandTranslator(translator);
|
||||
}else
|
||||
{
|
||||
_player1InputTranslator.AddCommandTranslator(translator);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void PauseSession(bool isPaused)
|
||||
{
|
||||
playerData.isPaused(isPaused);
|
||||
Time.timeScale = isPaused ? 0 : 1;
|
||||
if (!isSessionPaused && inputTranslator.IsTranslationResticted(InputConstants.InGameCommands))
|
||||
if (!_isSessionPaused && _player1InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) && _player2InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) )
|
||||
{
|
||||
isInputAlreadyRestricted = true;
|
||||
isSessionPaused = isPaused;
|
||||
_isInputAlreadyRestricted = true;
|
||||
_isSessionPaused = isPaused;
|
||||
return;
|
||||
}
|
||||
if (!inputTranslator.IsTranslationResticted(InputConstants.InGameCommands))
|
||||
if (!_player1InputTranslator.IsTranslationResticted(InputConstants.InGameCommands) && !_player2InputTranslator.IsTranslationResticted(InputConstants.InGameCommands))
|
||||
{
|
||||
isInputAlreadyRestricted = false;
|
||||
_isInputAlreadyRestricted = false;
|
||||
}
|
||||
isSessionPaused = isPaused;
|
||||
if (isInputAlreadyRestricted)
|
||||
_isSessionPaused = isPaused;
|
||||
if (_isInputAlreadyRestricted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -81,29 +99,99 @@ public class GameSession : MonoBehaviour,IResettable
|
||||
|
||||
public void RestrictInputs(List<ECommand> commands,bool isRestricted)
|
||||
{
|
||||
inputTranslator.RestictTranslation(commands, isRestricted);
|
||||
_player1InputTranslator.RestictTranslation(commands, isRestricted);
|
||||
if (isDuoMode)
|
||||
{
|
||||
_player2InputTranslator.RestictTranslation(commands, isRestricted);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void UpdateScoreboard(ScoreboardEntry entry)
|
||||
{
|
||||
scoreboard.AddScoreboardEntry(entry);
|
||||
}
|
||||
|
||||
private bool isCheckingEquality = false;
|
||||
|
||||
public void GoToGameScene()
|
||||
public void HandlePlayerDeath(Player deadPlayer)
|
||||
{
|
||||
SceneManager.LoadScene("GameScene", LoadSceneMode.Single);
|
||||
ResetToDefault();
|
||||
if (isDuoMode)
|
||||
{
|
||||
if (isCheckingEquality) return;
|
||||
|
||||
isCheckingEquality = true;
|
||||
StartCoroutine(CheckForEquality(deadPlayer));
|
||||
}
|
||||
else
|
||||
{
|
||||
GameResult.score = player1.PlayerStatictics.Score;
|
||||
GameResult.coinsEarned = player1.PlayerStatictics.coinCount;
|
||||
SceneManager.LoadScene("DeathScreen");
|
||||
}
|
||||
}
|
||||
|
||||
public void GoToMainMenu()
|
||||
private IEnumerator CheckForEquality(Player deadPlayer)
|
||||
{
|
||||
SceneManager.LoadScene("MainMenu", LoadSceneMode.Single);
|
||||
yield return new WaitForSeconds(0.3f);
|
||||
|
||||
if (player1.isDead && player2.isDead)
|
||||
{
|
||||
SendResultToDeathScreen1VS1("DRAW");
|
||||
}
|
||||
else if (player1.isDead)
|
||||
{
|
||||
SendResultToDeathScreen1VS1("PLAYER2");
|
||||
}
|
||||
else if (player2.isDead)
|
||||
{
|
||||
SendResultToDeathScreen1VS1("PLAYER1");
|
||||
}
|
||||
|
||||
isCheckingEquality = false;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
public void PauseBackToMainMenu()
|
||||
{
|
||||
GoToScene.GoToMainMenu();
|
||||
ResetToDefault();
|
||||
}
|
||||
|
||||
public void ResetToDefault()
|
||||
{
|
||||
PauseSession(false);
|
||||
currentPlayer.ResetToDefault();
|
||||
playerData.Reset();
|
||||
if(player1 !=null)
|
||||
player1.ResetToDefault();
|
||||
if (isDuoMode && player2 != null)
|
||||
{
|
||||
player2.ResetToDefault();
|
||||
}
|
||||
}
|
||||
|
||||
public PlayerData GetPlayerData()
|
||||
{
|
||||
return this.playerData;
|
||||
}
|
||||
}
|
38
Assets/Scripts/GameSession/GoToScene.cs
Normal file
38
Assets/Scripts/GameSession/GoToScene.cs
Normal file
@ -0,0 +1,38 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
3
Assets/Scripts/GameSession/GoToScene.cs.meta
Normal file
3
Assets/Scripts/GameSession/GoToScene.cs.meta
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 90560e670cf9430d920225316b227914
|
||||
timeCreated: 1736947730
|
@ -8,6 +8,6 @@ using System.Threading.Tasks;
|
||||
public interface IBindingHolder<T> where T : IBinding
|
||||
{
|
||||
public Dictionary<ECommand, T> InputBindings { get; }
|
||||
public void Init();
|
||||
public void Init(Boolean isPlayer2);
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
@ -10,17 +11,32 @@ public class KeyBindingHolder : IBindingHolder<KeyBinding>
|
||||
private readonly Dictionary<ECommand, KeyBinding> DefaultKeyBindings = new Dictionary<ECommand, KeyBinding>
|
||||
{
|
||||
{ECommand.NONE, new KeyBinding(KeyCode.None)},
|
||||
{ECommand.DOWN, new KeyBinding(KeyCode.DownArrow,KeyCode.S)},
|
||||
{ECommand.UP, new KeyBinding(KeyCode.UpArrow,KeyCode.W)},
|
||||
{ECommand.LEFT, new KeyBinding(KeyCode.LeftArrow,KeyCode.A)},
|
||||
{ECommand.RIGHT, new KeyBinding(KeyCode.RightArrow,KeyCode.D)},
|
||||
{ECommand.DOWN, new KeyBinding(KeyCode.DownArrow)},
|
||||
{ECommand.UP, new KeyBinding(KeyCode.UpArrow)},
|
||||
{ECommand.LEFT, new KeyBinding(KeyCode.LeftArrow)},
|
||||
{ECommand.RIGHT, new KeyBinding(KeyCode.RightArrow)},
|
||||
{ECommand.OPEN_SCOREBOARD, new KeyBinding(KeyCode.Tab)},
|
||||
{ECommand.OPEN_PAUSE_MENU, new KeyBinding(KeyCode.Escape)}
|
||||
};
|
||||
|
||||
private readonly Dictionary<ECommand, KeyBinding> Player2KeyBindings = new Dictionary<ECommand, KeyBinding>
|
||||
{
|
||||
{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()
|
||||
public void Init(Boolean isPlayer2)
|
||||
{
|
||||
if (InputBindings == null)
|
||||
InputBindings = DefaultKeyBindings;
|
||||
if (isPlayer2)
|
||||
{
|
||||
InputBindings = Player2KeyBindings;
|
||||
}
|
||||
else
|
||||
{
|
||||
InputBindings = DefaultKeyBindings;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,24 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23353de203a94c447af7be38973acc1d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,6 +1,7 @@
|
||||
|
||||
public enum ECommand
|
||||
{
|
||||
#region Player1
|
||||
NONE = 0,
|
||||
LEFT = 1,
|
||||
RIGHT = 2,
|
||||
@ -8,5 +9,17 @@ public enum ECommand
|
||||
DOWN = 4,
|
||||
OPEN_SCOREBOARD = 5,
|
||||
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,4 +1,5 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public interface IInputTranslator
|
||||
@ -17,11 +18,11 @@ public class InputTranslator<T> : IInputTranslator where T : IBinding
|
||||
private List<ICommandTranslator> commandTranslators;
|
||||
private IBindingHolder<T> bindingHolder;
|
||||
|
||||
public InputTranslator(IBindingHolder<T> holder)
|
||||
public InputTranslator(IBindingHolder<T> holder, Boolean isPlayer2)
|
||||
{
|
||||
commandTranslators = new List<ICommandTranslator>();
|
||||
bindingHolder = holder;
|
||||
bindingHolder.Init();
|
||||
bindingHolder.Init(isPlayer2);
|
||||
}
|
||||
//public void Init(IBindingHolder<T> holder)
|
||||
//{
|
||||
|
@ -1,33 +1,36 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Pools;
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(BoxCollider))]
|
||||
public class Obstacle : PoolingObject<Obstacle>, IObstacle,IDamageDealer,IResettable
|
||||
namespace Obstacles
|
||||
{
|
||||
[field: SerializeField] public bool IsOnAllLanes { get; private set; }
|
||||
[field: SerializeField] public bool IsInevitable { get; private set; }
|
||||
public BoxCollider Collider { get; private set; }
|
||||
[RequireComponent(typeof(BoxCollider))]
|
||||
public class Obstacle : PoolingObject<Obstacle>, IObstacle,IDamageDealer,IResettable
|
||||
{
|
||||
[field: SerializeField] public bool IsOnAllLanes { get; private set; }
|
||||
[field: SerializeField] public bool IsInevitable { get; private set; }
|
||||
public BoxCollider Collider { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Collider = GetComponent<BoxCollider>();
|
||||
}
|
||||
public void ResetToDefault()
|
||||
{
|
||||
transform.localPosition = Vector3.zero;
|
||||
transform.position = Vector3.zero;
|
||||
transform.rotation = Quaternion.identity;
|
||||
gameObject.transform.SetParent(OwningPool.transform);
|
||||
ReturnToPool();
|
||||
}
|
||||
public void Impact()
|
||||
{
|
||||
ResetToDefault();
|
||||
}
|
||||
private void Awake()
|
||||
{
|
||||
Collider = GetComponent<BoxCollider>();
|
||||
OwningPool = FindFirstObjectByType<ObstaclePool>();
|
||||
}
|
||||
public void ResetToDefault()
|
||||
{
|
||||
transform.localPosition = Vector3.zero;
|
||||
transform.position = Vector3.zero;
|
||||
transform.rotation = Quaternion.identity;
|
||||
gameObject.transform.SetParent(OwningPool.transform);
|
||||
ReturnToPool();
|
||||
}
|
||||
public void Impact()
|
||||
{
|
||||
ResetToDefault();
|
||||
}
|
||||
|
||||
public void DealDamage(IDamageable target, int amount)
|
||||
{
|
||||
target.TakeDamage(amount);
|
||||
public void DealDamage(IDamageable target, int amount)
|
||||
{
|
||||
target.TakeDamage(amount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ public class Pause : MonoBehaviour,ICommandTranslator
|
||||
{
|
||||
private void Start()
|
||||
{
|
||||
GameSession.Instance.AddCommandTranslator(this);
|
||||
GameSession.Instance.AddCommandTranslator(this, false);
|
||||
}
|
||||
|
||||
public void TranslateCommand(ECommand command, PressedState state)
|
||||
|
@ -41,7 +41,8 @@ public class Health : MonoBehaviour, IDamageable,IHealable, IResettable
|
||||
}
|
||||
public void TakeDamage(int amount)
|
||||
{
|
||||
if (CurrentHealth > 0){
|
||||
if (CurrentHealth > 0)
|
||||
{
|
||||
CurrentHealth -= amount;
|
||||
if (CurrentHealth <= 0){
|
||||
CurrentHealth = 0;
|
||||
|
@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
|
||||
[RequireComponent(typeof(CharacterController))]
|
||||
@ -8,7 +10,7 @@ using UnityEngine.SceneManagement;
|
||||
[RequireComponent(typeof(Health))]
|
||||
[RequireComponent(typeof(Statistics))]
|
||||
|
||||
public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
public class Player : MonoBehaviour, IResettable, ICommandTranslator
|
||||
{
|
||||
#region StateMachine
|
||||
|
||||
@ -20,87 +22,114 @@ public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
|
||||
private Animator animator;
|
||||
[SerializeField] private AnimationCurve jumpDeltaYCurve;
|
||||
public AnimationCurve JumpDeltaYCurve { get { return jumpDeltaYCurve; } }
|
||||
public PlayerAnimator PlayerAnimator { get; private set; }
|
||||
|
||||
public AnimationCurve JumpDeltaYCurve
|
||||
{
|
||||
get { return jumpDeltaYCurve; }
|
||||
}
|
||||
|
||||
public PlayerAnimator PlayerAnimator { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region PlayerComponents
|
||||
|
||||
[SerializeField] private PlayerData playerData;
|
||||
|
||||
private int initialSpeed;
|
||||
[SerializeField] internal PlayerData playerData;
|
||||
public IDamageable PlayerHealth { get; private set; }
|
||||
public Statistics PlayerStatictics { get; private set; }
|
||||
public PlayerData PlayerData { get { return playerData; } }
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region MovementControl
|
||||
|
||||
[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 PlayerCollider PlayerCollider { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sounds
|
||||
public AudioSource JumpSound;
|
||||
#endregion
|
||||
|
||||
public bool IsInvincible { get; private set; }
|
||||
public float InvincibilityTime { get; private set; } //PLAYER DATA ScriptableObject
|
||||
[SerializeField] private Boolean isPlayer2;
|
||||
[SerializeField] private Boolean isPlaying1VS1;
|
||||
public bool isDead = false;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
GameSession.Instance.AddCommandTranslator(this);
|
||||
playerData = GameSession.Instance.GetPlayerData();
|
||||
Debug.Log("Player Awake : " + this);
|
||||
GameSession.Instance.AddCommandTranslator(this, isPlayer2);
|
||||
animator = GetComponent<Animator>();
|
||||
if (animator)
|
||||
PlayerAnimator = new PlayerAnimator(animator);
|
||||
CharacterController = GetComponent<CharacterController>();
|
||||
PlayerCollider = new PlayerCollider(CharacterController);
|
||||
PlayerCollider = new PlayerCollider(CharacterController);
|
||||
PlayerHealth = GetComponent<IDamageable>();
|
||||
PlayerStatictics = GetComponent<Statistics>();
|
||||
PlayerStateMachine = new PlayerStateMachine(this);
|
||||
InvincibilityTime = playerData.InvincibilityTime;
|
||||
initialSpeed = (int)playerData.Speed;
|
||||
}
|
||||
playerData.CurrentSpeed = playerData.InitialSpeed;
|
||||
Debug.Log("Player Awake END");
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
PlayerHealth.OnOutOfHealth += Die;
|
||||
}
|
||||
// private void OnDisable()
|
||||
// {
|
||||
// PlayerHealth.OnOutOfHealth -= Die;
|
||||
// }
|
||||
private void Start()
|
||||
{
|
||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerStartingIdleState);
|
||||
JumpSound.GetComponent<AudioSource>();
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
PlayerData.Speed += 0.0001f;
|
||||
// Add smthg to manage the animator speed
|
||||
playerData.CurrentSpeed += playerData.SpeedAcceleration / 1000;
|
||||
PlayerStateMachine.Tick();
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
PlayerStateMachine.FixedTick();
|
||||
}
|
||||
}
|
||||
|
||||
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 (IsInvincible)
|
||||
return;
|
||||
int damageAmount = 1;
|
||||
int damageAmount = 1;
|
||||
var damageableComponents = GetComponents<IDamageable>();
|
||||
foreach (var component in damageableComponents)
|
||||
{
|
||||
damageDealer.DealDamage(component, damageAmount);
|
||||
}
|
||||
|
||||
StartCoroutine(GrantInvincibility());
|
||||
}
|
||||
|
||||
if (other.TryGetComponent(out IObstacle obstacle)) //switch..case
|
||||
{
|
||||
obstacle.Impact();
|
||||
@ -108,16 +137,21 @@ public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
else if (other.TryGetComponent(out ICollectable collectable))
|
||||
{
|
||||
collectable.Collect();
|
||||
|
||||
if (other.TryGetComponent(out Coin coin))
|
||||
{
|
||||
PlayerStatictics.AddScore(coin.CoinValue);
|
||||
coin.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Die()
|
||||
{
|
||||
PlayerData.Speed = initialSpeed;
|
||||
isDead = true;
|
||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerDeadState);
|
||||
GameSession.Instance.UpdateScoreboard(new ScoreboardEntry(name,PlayerStatictics.Score));
|
||||
|
||||
SceneManager.LoadScene("DeathScreen");
|
||||
GameSession.Instance.UpdateScoreboard(new ScoreboardEntry(name, PlayerStatictics.Score));
|
||||
GameSession.Instance.HandlePlayerDeath(this); // Informe GameSession qu'un joueur est mort
|
||||
}
|
||||
|
||||
public IEnumerator GrantInvincibility()
|
||||
@ -126,11 +160,13 @@ public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
yield return new WaitForSeconds(InvincibilityTime);
|
||||
IsInvincible = false;
|
||||
}
|
||||
|
||||
private void ReloadAnimator()
|
||||
{
|
||||
if (animator)
|
||||
PlayerAnimator = new PlayerAnimator(animator);
|
||||
}
|
||||
|
||||
public void ResetToDefault()
|
||||
{
|
||||
PlayerStateMachine.SetState(null);
|
||||
@ -138,6 +174,7 @@ public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
LaneSystem.ResetToDefault();
|
||||
Physics.SyncTransforms();
|
||||
ReloadAnimator();
|
||||
playerData.CurrentSpeed = playerData.InitialSpeed;
|
||||
}
|
||||
|
||||
public void TranslateCommand(ECommand command, PressedState state)
|
||||
@ -147,15 +184,20 @@ public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
switch (command)
|
||||
{
|
||||
case ECommand.RIGHT:
|
||||
case ECommand.RIGHT2:
|
||||
PlayerStateMachine.IncreaseTargetLane();
|
||||
JumpSound.Play();
|
||||
break;
|
||||
case ECommand.LEFT:
|
||||
case ECommand.LEFT2:
|
||||
PlayerStateMachine.DecreaseTargetLane();
|
||||
break;
|
||||
case ECommand.UP:
|
||||
case ECommand.UP2:
|
||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerJumpState);
|
||||
break;
|
||||
case ECommand.DOWN:
|
||||
case ECommand.DOWN2:
|
||||
PlayerStateMachine.SetState(PlayerStateMachine.PlayerSlideState);
|
||||
break;
|
||||
default:
|
||||
@ -163,4 +205,5 @@ public class Player : MonoBehaviour,IResettable, ICommandTranslator
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,39 +1,38 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerAnimator
|
||||
{
|
||||
private Animator animator;
|
||||
private int runningHash = Animator.StringToHash("Run");
|
||||
private int deadHash = Animator.StringToHash("Dead");
|
||||
private int jumpHash = Animator.StringToHash("Jump");
|
||||
private int slideHash = Animator.StringToHash("Slide");
|
||||
private int idleHash = Animator.StringToHash("Idle");
|
||||
private readonly Animator _animator;
|
||||
private readonly int _runningHash = Animator.StringToHash("Run");
|
||||
private readonly int _deadHash = Animator.StringToHash("Dead");
|
||||
private readonly int _jumpHash = Animator.StringToHash("Jump");
|
||||
private readonly int _slideHash = Animator.StringToHash("Slide");
|
||||
private readonly int _idleHash = Animator.StringToHash("Idle");
|
||||
|
||||
public PlayerAnimator(Animator animator)
|
||||
{
|
||||
if (animator)
|
||||
this.animator = animator;
|
||||
this._animator = animator;
|
||||
}
|
||||
public void SetRunState(bool isRunning)
|
||||
{
|
||||
animator?.SetBool(runningHash, isRunning);
|
||||
_animator?.SetBool(_runningHash, isRunning);
|
||||
}
|
||||
public void SetJumpState(bool isJumping)
|
||||
{
|
||||
animator?.SetBool(jumpHash, isJumping);
|
||||
_animator?.SetBool(_jumpHash, isJumping);
|
||||
}
|
||||
public void SetDeadState(bool isDead)
|
||||
{
|
||||
animator?.SetBool(deadHash, isDead);
|
||||
_animator?.SetBool(_deadHash, isDead);
|
||||
}
|
||||
public void SetSlideState(bool isSliding)
|
||||
{
|
||||
animator?.SetBool(slideHash, isSliding);
|
||||
_animator?.SetBool(_slideHash, isSliding);
|
||||
}
|
||||
public void SetIdleState(bool isIdle)
|
||||
{
|
||||
animator?.SetBool(idleHash, isIdle);
|
||||
if(_animator){}
|
||||
_animator?.SetBool(_idleHash, isIdle);
|
||||
}
|
||||
}
|
||||
|
@ -8,11 +8,11 @@ public abstract class MovingState : PlayerState
|
||||
private float speed; //SO
|
||||
private float laneSwitchSpeed; //SO
|
||||
protected const float gravity = -9.8f;
|
||||
private float invincibilityTime => playerSM.PlayerData.InvincibilityTime;
|
||||
private float invincibilityTime => playerSM.playerData.InvincibilityTime;
|
||||
public MovingState(PlayerStateMachine playerStateMachine) : base(playerStateMachine)
|
||||
{
|
||||
this.playerSM = playerStateMachine;
|
||||
speed = playerData.Speed;
|
||||
speed = playerData.CurrentSpeed;
|
||||
laneSwitchSpeed = playerData.LaneSwitchSpeed;
|
||||
}
|
||||
public override void OnStateEnter(){}
|
||||
@ -21,8 +21,7 @@ public abstract class MovingState : PlayerState
|
||||
|
||||
public override void Tick()
|
||||
{
|
||||
speed = playerData.Speed;
|
||||
//HandleDirection();
|
||||
speed = playerData.CurrentSpeed;
|
||||
playerSM.HorizontalDeltaPosition = playerSM.PlayerTransform.forward * speed * Time.deltaTime ;
|
||||
playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.forward * speed * Time.deltaTime;
|
||||
playerSM.UpdateDistance(playerSM.HorizontalDeltaPosition.z); //вынести в контроллер
|
||||
@ -38,28 +37,6 @@ public abstract class MovingState : PlayerState
|
||||
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()
|
||||
{
|
||||
float sidewaysPos = playerTransform.localPosition.x;
|
||||
@ -83,9 +60,6 @@ public abstract class MovingState : PlayerState
|
||||
playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.right * diffX.x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,7 +11,7 @@ public abstract class PlayerState : State<Player>
|
||||
public PlayerState(PlayerStateMachine playerStateMachine)
|
||||
{
|
||||
playerSM = playerStateMachine;
|
||||
playerData = playerStateMachine.PlayerData;
|
||||
playerData = playerStateMachine.playerData;
|
||||
playerTransform = playerStateMachine.PlayerTransform;
|
||||
}
|
||||
public override void Tick()
|
||||
|
@ -4,14 +4,13 @@ using UnityEngine.Animations.Rigging;
|
||||
public class PlayerStateMachine : StateMachine<Player>
|
||||
{
|
||||
private Player player;
|
||||
private PlayerData playerData;
|
||||
public PlayerData playerData;
|
||||
private Transform playerTransform;
|
||||
public Transform PlayerTransform { get { return playerTransform; } }
|
||||
public PlayerData PlayerData { get { return playerData; } }
|
||||
public PlayerStateMachine(Player player)
|
||||
{
|
||||
this.player = player;
|
||||
playerData = player.PlayerData;
|
||||
playerData = GameSession.Instance.GetPlayerData();
|
||||
playerTransform = player.transform;
|
||||
InitStates();
|
||||
}
|
||||
|
@ -2,17 +2,18 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
public class Statistics : MonoBehaviour,IResettable
|
||||
{
|
||||
private float distance;
|
||||
private int coinCount;
|
||||
public int coinCount;
|
||||
private int coinMultiplier;
|
||||
public int Score { get; private set; }
|
||||
public event Action<int> OnCoinCountChanged = delegate { };
|
||||
public event Action<float> OnDistanceChanged = delegate { };
|
||||
public event Action<int> OnScoreCalculated = delegate { };
|
||||
[SerializeField] private PlayerHUDView PlayerHUD;
|
||||
[FormerlySerializedAs("PlayerHUD")] [SerializeField] private PlayerHUDView playerHUD;
|
||||
private void Awake()
|
||||
{
|
||||
ResetToDefault();
|
||||
@ -43,7 +44,7 @@ public class Statistics : MonoBehaviour,IResettable
|
||||
{
|
||||
Score = Mathf.FloorToInt(coinCount * coinMultiplier + distance);
|
||||
OnScoreCalculated?.Invoke(Score);
|
||||
PlayerHUD.UpdateScore(Score.ToString());
|
||||
playerHUD.UpdateScore(Score.ToString());
|
||||
}
|
||||
|
||||
public void ResetToDefault()
|
||||
@ -54,4 +55,12 @@ public class Statistics : MonoBehaviour,IResettable
|
||||
coinMultiplier = 1;
|
||||
//gameOverPopUp.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
public void AddScore(int amount)
|
||||
{
|
||||
Score += amount;
|
||||
OnScoreCalculated?.Invoke(Score);
|
||||
playerHUD.UpdateScore(Score.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,9 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
public class CoinPool : BasePool<Coin>
|
||||
{}
|
||||
namespace Pools
|
||||
{
|
||||
public sealed class CoinPool : BasePool<Coin>
|
||||
{}
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,8 @@
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using Obstacles;
|
||||
|
||||
namespace Pools
|
||||
{
|
||||
|
||||
|
@ -1,36 +1,71 @@
|
||||
using Pools;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class ChunkGenerator : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private LaneSystem LaneSystem;
|
||||
public CoinPool CoinPool { get; private set; }
|
||||
[SerializeField] private CoinPool coinPool;
|
||||
[field: SerializeField] public List<ObstaclePool> ObstaclePools { get; private set; }
|
||||
private bool isFirstChunk = true;
|
||||
|
||||
private bool _isFirstChunk = true;
|
||||
public Chunk Generate(Chunk chunkToFill)
|
||||
{
|
||||
if (isFirstChunk)
|
||||
if (_isFirstChunk)
|
||||
{
|
||||
isFirstChunk = false;
|
||||
_isFirstChunk = false;
|
||||
return chunkToFill;
|
||||
}
|
||||
if (ObstaclePools.IsEmpty())
|
||||
return chunkToFill;
|
||||
var obstaclePool = ObstaclePools.GetRandomElement();
|
||||
var obstacle = obstaclePool.Spawn();
|
||||
chunkToFill.Obstacles.Add(obstacle);
|
||||
obstacle.transform.SetParent(chunkToFill.transform, true);
|
||||
obstacle.transform.localPosition = chunkToFill.Grid.GetRandomPosition();
|
||||
if (obstacle.IsOnAllLanes)
|
||||
if (!ObstaclePools.IsEmpty())
|
||||
{
|
||||
obstacle.transform.localPosition = new Vector3(
|
||||
LaneSystem.CenterLane * LaneSystem.LaneWidth,
|
||||
transform.localPosition.y,
|
||||
transform.localPosition.z
|
||||
);
|
||||
var obstaclePool = ObstaclePools.GetRandomElement();
|
||||
var obstacle = obstaclePool.Spawn();
|
||||
chunkToFill.Obstacles.Add(obstacle);
|
||||
obstacle.transform.SetParent(chunkToFill.transform, true);
|
||||
obstacle.transform.localPosition = chunkToFill.Grid.GetRandomPosition();
|
||||
|
||||
if (obstacle.IsOnAllLanes)
|
||||
{
|
||||
obstacle.transform.localPosition = new Vector3(
|
||||
LaneSystem.CenterLane * LaneSystem.LaneWidth,
|
||||
transform.localPosition.y,
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Obstacles;
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(BoxCollider))]
|
||||
@ -37,6 +38,7 @@ public abstract class Chunk : PoolingObject<Chunk>, IResettable
|
||||
transform.localPosition = Vector3.zero;
|
||||
transform.position = Vector3.zero;
|
||||
transform.rotation = Quaternion.identity;
|
||||
Coins.Clear();
|
||||
}
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@ public class LaneSystem : MonoBehaviour,IResettable
|
||||
[field: SerializeField] public float LaneWidth { get; private set; }
|
||||
|
||||
[SerializeField] private int laneCount;
|
||||
public int LaneCount => laneCount;
|
||||
public List<int> Lanes { get; private set; }
|
||||
public float CurrentPosition { get; private set; }
|
||||
public float TargetPosition { get; set; }
|
||||
|
@ -1,20 +1,24 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
using System;
|
||||
|
||||
[Serializable]
|
||||
public class ScoreboardEntriesTable
|
||||
{
|
||||
public ScoreboardEntriesTable(List<ScoreboardEntry> entries)
|
||||
public List<ScoreboardEntry> listeScore;
|
||||
|
||||
public ScoreboardEntriesTable()
|
||||
{
|
||||
this.entries = entries;
|
||||
listeScore = new List<ScoreboardEntry>();
|
||||
}
|
||||
public List<ScoreboardEntry> entries = new List<ScoreboardEntry>();
|
||||
}
|
||||
|
||||
public class Scoreboard : MonoBehaviour, ICommandTranslator
|
||||
public class Scoreboard : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private int maxEntries;
|
||||
private List<ScoreboardEntry> entries = new List<ScoreboardEntry>();
|
||||
private string apiUrl = "https://awesomerunner.lagaudiere.uk/score";
|
||||
public List<ScoreboardEntry> entries = new List<ScoreboardEntry>();
|
||||
|
||||
public event Action<ScoreboardEntry> OnEntryAdded;
|
||||
|
||||
@ -22,72 +26,111 @@ public class Scoreboard : MonoBehaviour, ICommandTranslator
|
||||
|
||||
private void Start()
|
||||
{
|
||||
GameSession.Instance.AddCommandTranslator(this);
|
||||
string jsonScoreboardEntries = PlayerPrefs.GetString("ScoreboardEntriesTableTest"); //Binary file
|
||||
ScoreboardEntriesTable entriesTable = JsonUtility.FromJson<ScoreboardEntriesTable>(jsonScoreboardEntries);
|
||||
if (entriesTable == null)
|
||||
return;
|
||||
if (entriesTable.entries == null)
|
||||
return;
|
||||
List<PlayerScoreboardCardData> scoreboardCardDatas = new List<PlayerScoreboardCardData>();
|
||||
for (int i = 0; i < entriesTable.entries.Count; i++)
|
||||
StartCoroutine(GetScoreboard());
|
||||
}
|
||||
private IEnumerator GetScoreboard()
|
||||
{
|
||||
Debug.Log("Fetching scoreboard...");
|
||||
|
||||
using (UnityWebRequest request = UnityWebRequest.Get(apiUrl))
|
||||
{
|
||||
entries.Add(entriesTable.entries[i]);
|
||||
OnEntryAdded?.Invoke(entriesTable.entries[i]);
|
||||
PlayerScoreboardCardData cardData = new PlayerScoreboardCardData(entriesTable.entries[i].Name, entriesTable.entries[i].Score.ToString());
|
||||
scoreboardCardDatas.Add(cardData);
|
||||
yield return request.SendWebRequest();
|
||||
|
||||
if (request.result == UnityWebRequest.Result.Success)
|
||||
{
|
||||
string json = request.downloadHandler.text;
|
||||
Debug.Log("Received JSON: " + json);
|
||||
|
||||
// Désérialiser directement en un tableau
|
||||
ScoreboardEntry[] scoreboardEntriesArray = JsonHelper.FromJson<ScoreboardEntry>(json);
|
||||
|
||||
if (scoreboardEntriesArray != null)
|
||||
{
|
||||
entries = new List<ScoreboardEntry>(scoreboardEntriesArray);
|
||||
SortScoreboardEntriesByHighscore(entries);
|
||||
UpdateScoreboardView();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("Erreur lors de la récupération du scoreboard : " + request.error);
|
||||
}
|
||||
}
|
||||
SortScoreboardEntriesByHighscore(entries);
|
||||
SortScoreboardCardsDatasByHighscore(scoreboardCardDatas);
|
||||
scoreboardView.AddPlayerCards(scoreboardCardDatas);
|
||||
}
|
||||
|
||||
public void AddScoreboardEntry(string entryName, int entryScore)
|
||||
{
|
||||
ScoreboardEntry entry = new ScoreboardEntry(entryName, entryScore);
|
||||
entries.Add(entry);
|
||||
OnEntryAdded?.Invoke(entry);
|
||||
}
|
||||
|
||||
public void SortScoreboardEntriesByHighscore(List<ScoreboardEntry> entries)
|
||||
{
|
||||
entries.Sort((x,y) => y.Score.CompareTo(x.Score));
|
||||
}
|
||||
|
||||
public void SortScoreboardCardsDatasByHighscore(List<PlayerScoreboardCardData> scoreboardCardDatas)
|
||||
{
|
||||
scoreboardCardDatas.Sort((x, y) => y.playerScore.CompareTo(x.playerScore));
|
||||
}
|
||||
|
||||
public void AddScoreboardEntry(ScoreboardEntry entry)
|
||||
{
|
||||
entries.Add(entry);
|
||||
OnEntryAdded?.Invoke(entry);
|
||||
SaveScoreboardEntriesTable();
|
||||
}
|
||||
|
||||
public void SaveScoreboardEntriesTable()
|
||||
{
|
||||
SortScoreboardEntriesByHighscore(entries);
|
||||
ScoreboardEntriesTable scoreboardEntriesTable = new ScoreboardEntriesTable(entries);
|
||||
string jsonScoreboardEntries = JsonUtility.ToJson(scoreboardEntriesTable);
|
||||
PlayerPrefs.SetString("ScoreboardEntriesTableTest", jsonScoreboardEntries);
|
||||
PlayerPrefs.Save();
|
||||
UpdateScoreboardView();
|
||||
StartCoroutine(PostScoreboardEntry(entry));
|
||||
}
|
||||
|
||||
public void TranslateCommand(ECommand command, PressedState state)
|
||||
private IEnumerator PostScoreboardEntry(ScoreboardEntry entry)
|
||||
{
|
||||
switch (command)
|
||||
string json = JsonUtility.ToJson(entry);
|
||||
using (UnityWebRequest request = new UnityWebRequest(apiUrl, "POST"))
|
||||
{
|
||||
case ECommand.OPEN_SCOREBOARD:
|
||||
if (state.IsPressed == true)
|
||||
scoreboardView.Show(true);
|
||||
if (state.IsReleased == true)
|
||||
scoreboardView.Show(false);
|
||||
break;
|
||||
default:
|
||||
scoreboardView.Show(false);
|
||||
break;
|
||||
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);
|
||||
}
|
||||
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 static class JsonHelper
|
||||
{
|
||||
public static T[] FromJson<T>(string json)
|
||||
{
|
||||
string wrappedJson = "{\"items\":" + json + "}";
|
||||
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(wrappedJson);
|
||||
return wrapper.items;
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
private class Wrapper<T>
|
||||
{
|
||||
public T[] items;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ScoreboardEntriesWrapper
|
||||
{
|
||||
public ScoreboardEntry[] listeScore;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
@ -5,13 +6,13 @@ using UnityEngine;
|
||||
[System.Serializable]
|
||||
public class ScoreboardEntry
|
||||
{
|
||||
[SerializeField] private float score;
|
||||
[SerializeField] private string name;
|
||||
public float Score { get { return score; } private set { score = value; } }
|
||||
public string Name { get { return name; } private set { name = value; } }
|
||||
public ScoreboardEntry(string name,float score)
|
||||
public string pseudo;
|
||||
public int score;
|
||||
|
||||
public ScoreboardEntry(string pseudo, int score)
|
||||
{
|
||||
this.name = name;
|
||||
this.pseudo = pseudo;
|
||||
this.score = score;
|
||||
}
|
||||
}
|
||||
|
||||
|
8
Assets/Scripts/Skin.meta
Normal file
8
Assets/Scripts/Skin.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a87de00688705474c882c4db176e76cf
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
33
Assets/Scripts/Skin/MenuManager.cs
Normal file
33
Assets/Scripts/Skin/MenuManager.cs
Normal file
@ -0,0 +1,33 @@
|
||||
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
|
||||
}
|
||||
}
|
2
Assets/Scripts/Skin/MenuManager.cs.meta
Normal file
2
Assets/Scripts/Skin/MenuManager.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73a49fe834731374cbc6b8886a79c0f1
|
26
Assets/Scripts/Skin/PlayerSkinManager.cs
Normal file
26
Assets/Scripts/Skin/PlayerSkinManager.cs
Normal file
@ -0,0 +1,26 @@
|
||||
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];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/Scripts/Skin/PlayerSkinManager.cs.meta
Normal file
2
Assets/Scripts/Skin/PlayerSkinManager.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa943b55701d5e245bcdc37e137a1e73
|
13
Assets/Scripts/Skin/SkinSelector.cs
Normal file
13
Assets/Scripts/Skin/SkinSelector.cs
Normal file
@ -0,0 +1,13 @@
|
||||
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();
|
||||
}
|
||||
}
|
2
Assets/Scripts/Skin/SkinSelector.cs.meta
Normal file
2
Assets/Scripts/Skin/SkinSelector.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21b477373147aaf4a81c8bf75f8984a5
|
62
Assets/Scripts/UI/Views/DeathScreen1VS1.cs
Normal file
62
Assets/Scripts/UI/Views/DeathScreen1VS1.cs
Normal file
@ -0,0 +1,62 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
3
Assets/Scripts/UI/Views/DeathScreen1VS1.cs.meta
Normal file
3
Assets/Scripts/UI/Views/DeathScreen1VS1.cs.meta
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80d0e44a44be4982a77850a10cbae2f9
|
||||
timeCreated: 1736867806
|
@ -26,12 +26,12 @@ public class PausedView : BaseView
|
||||
|
||||
mainMenuButton.onClick.AddListener(() =>
|
||||
{
|
||||
GameSession.Instance.GoToMainMenu();
|
||||
GameSession.Instance.PauseBackToMainMenu();
|
||||
});
|
||||
|
||||
restartButton.onClick.AddListener(() =>
|
||||
{
|
||||
GameSession.Instance.GoToGameScene();
|
||||
GameSession.Instance.PausePlayAgain();
|
||||
});
|
||||
base.Init();
|
||||
}
|
||||
|
@ -21,22 +21,37 @@ public class ScoreboardView : BaseView
|
||||
}
|
||||
public void AddPlayerCards(List<PlayerScoreboardCardData> cardsData)
|
||||
{
|
||||
Debug.Log("Adding " + cardsData.Count + " player cards.");
|
||||
|
||||
foreach (var cardData in cardsData)
|
||||
{
|
||||
Debug.Log("Card Data: " + cardData.playerName + " - " + cardData.playerScore);
|
||||
AddPlayerCard(cardData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void AddPlayerCard(PlayerScoreboardCardData cardData)
|
||||
{
|
||||
//if (playerCards.ContainsKey(cardData.playerName))
|
||||
// return;
|
||||
if (layoutGroup == null)
|
||||
{
|
||||
Debug.LogError("layoutGroup is not assigned!");
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerScoreboardCard playerScoreboardCard = Instantiate(cardPrefab);
|
||||
playerScoreboardCard.transform.SetParent(layoutGroup.transform, false);
|
||||
playerScoreboardCard.UpdateCard(cardData);
|
||||
playerScoreboardCard.UpdateCard(cardData);
|
||||
|
||||
Debug.Log("Player card created for: " + cardData.playerName);
|
||||
|
||||
playerCards.Add(playerScoreboardCard);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public void RemovePlayerCard(string cardTag)
|
||||
{
|
||||
//if (playerCards.ContainsKey(cardTag))
|
||||
|
@ -1,140 +0,0 @@
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f7b00d918e7b13c4c8823278d24d708a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,3 +1,4 @@
|
||||
using Assets.Scripts.GameSession;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UI;
|
||||
@ -20,6 +21,6 @@ public class RestartButton : MonoBehaviour
|
||||
|
||||
public void RestartGame()
|
||||
{
|
||||
SceneManager.LoadScene("GameScene");
|
||||
GoToScene.GoToSoloMode();
|
||||
}
|
||||
}
|
||||
|
8
Assets/Sounds.meta
Normal file
8
Assets/Sounds.meta
Normal file
@ -0,0 +1,8 @@
|
||||
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)
Normal file
BIN
Assets/Sounds/Trailer Action Cinematic by Infraction [No Copyright Music] ⧸ Galactic.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -0,0 +1,23 @@
|
||||
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:
|
BIN
Assets/Sounds/jumping_1-6452.mp3
(Stored with Git LFS)
Normal file
BIN
Assets/Sounds/jumping_1-6452.mp3
(Stored with Git LFS)
Normal file
Binary file not shown.
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