From fd3710259466becc4d503e11db991d68d74ff4f2 Mon Sep 17 00:00:00 2001 From: fiore Date: Thu, 23 Jan 2025 14:52:15 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8F=84=EB=A1=9C=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=B0=8F=20=ED=9D=90=EB=A6=84=20=EC=9E=91=EC=97=85=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.idea.hyper-racer/.idea/.gitignore | 13 + .idea/.idea.hyper-racer/.idea/encodings.xml | 4 + .idea/.idea.hyper-racer/.idea/indexLayout.xml | 8 + .idea/.idea.hyper-racer/.idea/vcs.xml | 6 + Assets/Prefabs/Car.prefab | 87 ++++-- Assets/Prefabs/Road.prefab | 79 +++-- Assets/Scenes/Game.unity | 282 ++++++++---------- Assets/Scripts/CarController.cs | 15 +- Assets/Scripts/GameManager.cs | 112 ++++++- Assets/Scripts/MoveButton.cs | 30 ++ Assets/Scripts/MoveButton.cs.meta | 11 + Assets/Scripts/RoadController.cs | 26 +- ProjectSettings/EditorBuildSettings.asset | 5 +- ProjectSettings/ProjectSettings.asset | 101 ++++++- 14 files changed, 530 insertions(+), 249 deletions(-) create mode 100644 .idea/.idea.hyper-racer/.idea/.gitignore create mode 100644 .idea/.idea.hyper-racer/.idea/encodings.xml create mode 100644 .idea/.idea.hyper-racer/.idea/indexLayout.xml create mode 100644 .idea/.idea.hyper-racer/.idea/vcs.xml create mode 100644 Assets/Scripts/MoveButton.cs create mode 100644 Assets/Scripts/MoveButton.cs.meta diff --git a/.idea/.idea.hyper-racer/.idea/.gitignore b/.idea/.idea.hyper-racer/.idea/.gitignore new file mode 100644 index 0000000..eb7461d --- /dev/null +++ b/.idea/.idea.hyper-racer/.idea/.gitignore @@ -0,0 +1,13 @@ +# 디폴트 무시된 파일 +/shelf/ +/workspace.xml +# Rider에서 무시된 파일 +/contentModel.xml +/modules.xml +/.idea.hyper-racer.iml +/projectSettingsUpdater.xml +# 에디터 기반 HTTP 클라이언트 요청 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.hyper-racer/.idea/encodings.xml b/.idea/.idea.hyper-racer/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.hyper-racer/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.hyper-racer/.idea/indexLayout.xml b/.idea/.idea.hyper-racer/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.hyper-racer/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.hyper-racer/.idea/vcs.xml b/.idea/.idea.hyper-racer/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.hyper-racer/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Prefabs/Car.prefab b/Assets/Prefabs/Car.prefab index 152a770..74cedad 100644 --- a/Assets/Prefabs/Car.prefab +++ b/Assets/Prefabs/Car.prefab @@ -9,9 +9,12 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 5008924908329562417} + - component: {fileID: 6725779848200828261} + - component: {fileID: 3413363630203867387} + - component: {fileID: 5109171103557533979} m_Layer: 0 m_Name: Car - m_TagString: Untagged + m_TagString: Player m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -32,6 +35,66 @@ Transform: - {fileID: 1784336456945261021} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6725779848200828261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760539630995037048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b895886c69b2a2f46becc4c401a46d41, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!65 &3413363630203867387 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760539630995037048} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.5, y: 0.5, z: 1} + m_Center: {x: 0, y: 0.3, z: 0} +--- !u!54 &5109171103557533979 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760539630995037048} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 --- !u!1 &1020141606158369988 GameObject: m_ObjectHideFlags: 0 @@ -43,7 +106,6 @@ GameObject: - component: {fileID: 1784336456945261021} - component: {fileID: 634751819130617363} - component: {fileID: 1942844400824365698} - - component: {fileID: 3240914084039788826} m_Layer: 0 m_Name: Car Model m_TagString: Untagged @@ -116,24 +178,3 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &3240914084039788826 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1020141606158369988} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/Prefabs/Road.prefab b/Assets/Prefabs/Road.prefab index deeca1d..ad3edc8 100644 --- a/Assets/Prefabs/Road.prefab +++ b/Assets/Prefabs/Road.prefab @@ -11,7 +11,6 @@ GameObject: - component: {fileID: 2797165861471716645} - component: {fileID: 6601045137243288556} - component: {fileID: 4428132594534793092} - - component: {fileID: 3239040711238787068} m_Layer: 0 m_Name: Left Wall m_TagString: Untagged @@ -84,27 +83,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &3239040711238787068 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2145145660633328863} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} --- !u!1 &4369078642710373103 GameObject: m_ObjectHideFlags: 0 @@ -116,7 +94,6 @@ GameObject: - component: {fileID: 4118850787427677521} - component: {fileID: 6870227808342940373} - component: {fileID: 6617408307785989021} - - component: {fileID: 9215493061109789446} m_Layer: 0 m_Name: Right Wall m_TagString: Untagged @@ -189,27 +166,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &9215493061109789446 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4369078642710373103} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} --- !u!1 &5727221990906001058 GameObject: m_ObjectHideFlags: 0 @@ -219,6 +175,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 4178132661795734011} + - component: {fileID: 6528481743159623274} + - component: {fileID: 6120861585028208109} m_Layer: 0 m_Name: Road m_TagString: Untagged @@ -244,6 +202,39 @@ Transform: - {fileID: 4118850787427677521} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6528481743159623274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5727221990906001058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3406ee5e48dd5a847857f84a17ea44df, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!65 &6120861585028208109 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5727221990906001058} + 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: 4, y: 0.5, z: 10} + m_Center: {x: 0, y: 0.25, z: 0} --- !u!1 &8959781656392176700 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 6172632..ac00cae 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -157,7 +157,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0, y: -50} - m_SizeDelta: {x: 200, y: 50} + m_SizeDelta: {x: 300, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &235866482 MonoBehaviour: @@ -206,8 +206,8 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 + m_fontSize: 44 + m_fontSizeBase: 44 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -267,7 +267,8 @@ GameObject: - component: {fileID: 436294420} - component: {fileID: 436294423} - component: {fileID: 436294422} - - component: {fileID: 436294421} + - component: {fileID: 436294425} + - component: {fileID: 436294424} m_Layer: 5 m_Name: RightMoveButton m_TagString: Untagged @@ -294,50 +295,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &436294421 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 436294419} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 436294422} - m_OnClick: - m_PersistentCalls: - m_Calls: [] --- !u!114 &436294422 MonoBehaviour: m_ObjectHideFlags: 0 @@ -376,6 +333,63 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 436294419} m_CullTransparentMesh: 1 +--- !u!114 &436294424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 436294419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3637266a3325f4148938cc42f691b2bf, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &436294425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 436294419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 436294424} + m_TargetAssemblyTypeName: MoveButton, Assembly-CSharp + m_MethodName: ButtonDown + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 436294424} + m_TargetAssemblyTypeName: MoveButton, Assembly-CSharp + m_MethodName: ButtonUp + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &722205835 GameObject: m_ObjectHideFlags: 0 @@ -504,7 +518,7 @@ Camera: near clip plane: 0.3 far clip plane: 1000 field of view: 60 - orthographic: 1 + orthographic: 0 orthographic size: 5 m_Depth: -1 m_CullingMask: @@ -530,7 +544,7 @@ Transform: m_GameObject: {fileID: 931054082} serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 10, z: 0} + m_LocalPosition: {x: 0, y: 8, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -580,6 +594,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0698b7f52bbf6d14882b7c9da029d07d, type: 3} m_Name: m_EditorClassIdentifier: + carPrefab: {fileID: 760539630995037048, guid: 103fb7e71e4459e4b93a7b0891f9d844, type: 3} + roadPrefab: {fileID: 5727221990906001058, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} + leftMoveButton: {fileID: 2056539410} + rightMoveButton: {fileID: 436294424} --- !u!1 &1382488884 GameObject: m_ObjectHideFlags: 0 @@ -722,7 +740,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} m_Name: m_EditorClassIdentifier: - m_UiScaleMode: 0 + m_UiScaleMode: 1 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 m_ReferenceResolution: {x: 800, y: 600} @@ -778,63 +796,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} ---- !u!1001 &1647335606 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4178132661795734011, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5727221990906001058, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} - propertyPath: m_Name - value: Road - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 25a54d19bf0cf244fa383ef163ec519b, type: 3} --- !u!1 &2056539405 GameObject: m_ObjectHideFlags: 0 @@ -846,7 +807,8 @@ GameObject: - component: {fileID: 2056539406} - component: {fileID: 2056539409} - component: {fileID: 2056539408} - - component: {fileID: 2056539407} + - component: {fileID: 2056539411} + - component: {fileID: 2056539410} m_Layer: 5 m_Name: LeftMoveButton m_TagString: Untagged @@ -873,50 +835,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2056539407 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2056539405} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 2056539408} - m_OnClick: - m_PersistentCalls: - m_Calls: [] --- !u!114 &2056539408 MonoBehaviour: m_ObjectHideFlags: 0 @@ -955,6 +873,63 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2056539405} m_CullTransparentMesh: 1 +--- !u!114 &2056539410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2056539405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3637266a3325f4148938cc42f691b2bf, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2056539411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2056539405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2056539410} + m_TargetAssemblyTypeName: MoveButton, Assembly-CSharp + m_MethodName: ButtonDown + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2056539410} + m_TargetAssemblyTypeName: MoveButton, Assembly-CSharp + m_MethodName: ButtonUp + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -962,6 +937,5 @@ SceneRoots: - {fileID: 931054085} - {fileID: 1382488886} - {fileID: 1017920448} - - {fileID: 1647335606} - {fileID: 1448752094} - {fileID: 722205838} diff --git a/Assets/Scripts/CarController.cs b/Assets/Scripts/CarController.cs index 69be22f..92089e6 100644 --- a/Assets/Scripts/CarController.cs +++ b/Assets/Scripts/CarController.cs @@ -4,15 +4,8 @@ using UnityEngine; public class CarController : MonoBehaviour { - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } + public void Move(float direction) + { + transform.Translate(Vector3.right * (direction * Time.deltaTime)); + } } diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 1c6702c..25269a5 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -1,18 +1,118 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.Serialization; public class GameManager : MonoBehaviour { - // Start is called before the first frame update - void Start() + // 프리팹 + [Header("Prefabs")] + [SerializeField] private GameObject carPrefab; + [SerializeField] private GameObject roadPrefab; + + // UI 관련 코드 + [SerializeField] private MoveButton leftMoveButton; + [SerializeField] private MoveButton rightMoveButton; + + // 도로 오브젝트 풀 + private Queue _roadPool = new Queue(); + private const int RoadPoolSize = 3; + + // 도로 이동 + private List _activeRoads = new List(); + + // 싱글톤 + private static GameManager _instance; + public static GameManager Instance { - + get + { + if(_instance == null) + { + _instance = FindObjectOfType(); + } + return _instance; + } } - // Update is called once per frame - void Update() + private void Awake() { - + if (_instance != null && _instance != this) + { + Destroy(this.gameObject); + } + else + { + _instance = this; + } } + + private void Start() + { + // Road 오브젝트 풀 초기화 + InitializeRoadPool(); + + StartGame(); + } + + private void Update() + { + // 활성화된 도로를 아래로 서서히 이동 + foreach (var activeRoad in _activeRoads) + { + activeRoad.transform.Translate(Vector3.back * Time.deltaTime); + } + } + + private void StartGame() + { + // 도로 생성 + SpawnRoad(Vector3.zero); + + // 자동차 생성 + var carController = Instantiate(carPrefab, new Vector3(0, 0, -3f), Quaternion.identity) + .GetComponent(); + + // left, right move button에 자동차 컨트롤 기능 적용 + leftMoveButton.OnMoveButtonDown += () => carController.Move(-1f); + rightMoveButton.OnMoveButtonDown += () => carController.Move(1f); + } + + // 도로 생성 및 관리 + #region 도로 생성 및 관리 + + /// + /// 도로 오브젝트 풀 초기화 + /// + private void InitializeRoadPool() + { + for (int i = 0; i < RoadPoolSize; i++) + { + GameObject road = Instantiate(roadPrefab); + road.SetActive(false); + _roadPool.Enqueue(road); + } + } + /// + /// 도로 오브젝트 풀에서 불러와 배치하는 함수 + /// + public void SpawnRoad(Vector3 position) + { + if (_roadPool.Count > 0) + { + GameObject road = _roadPool.Dequeue(); + road.transform.position = position; + road.SetActive(true); + + // 활성화 된 길을 움직이기 위해 List에 저장 + _activeRoads.Add(road); + } + else + { + GameObject road = Instantiate(roadPrefab, position, Quaternion.identity); + _activeRoads.Add(road); + } + } + + #endregion } diff --git a/Assets/Scripts/MoveButton.cs b/Assets/Scripts/MoveButton.cs new file mode 100644 index 0000000..48ac345 --- /dev/null +++ b/Assets/Scripts/MoveButton.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MoveButton : MonoBehaviour +{ + public delegate void MoveButtonDelegate(); + public event MoveButtonDelegate OnMoveButtonDown; + + private bool _isDown; + + private void Update() + { + if (_isDown) + { + // do something... + OnMoveButtonDown.Invoke(); + } + } + + public void ButtonDown() + { + _isDown = true; + } + + public void ButtonUp() + { + _isDown = false; + } +} diff --git a/Assets/Scripts/MoveButton.cs.meta b/Assets/Scripts/MoveButton.cs.meta new file mode 100644 index 0000000..9a56082 --- /dev/null +++ b/Assets/Scripts/MoveButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3637266a3325f4148938cc42f691b2bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/RoadController.cs b/Assets/Scripts/RoadController.cs index 14fe3f3..b1d1c2d 100644 --- a/Assets/Scripts/RoadController.cs +++ b/Assets/Scripts/RoadController.cs @@ -4,15 +4,29 @@ using UnityEngine; public class RoadController : MonoBehaviour { - // Start is called before the first frame update - void Start() + /// + /// 플레이어 차량이 도로에 진입하면 다음 도로를 생성 + /// + /// + private void OnTriggerEnter(Collider other) { - + Debug.Log("Enter?"); + if (other.CompareTag("Player")) + { + GameManager.Instance.SpawnRoad(transform.position + new Vector3(0,0,10)); + } } - // Update is called once per frame - void Update() + /// + /// 플레이어 차량이 도로를 벗어나면 해당 도로를 제거 + /// + /// + private void OnTriggerExit(Collider other) { - + Debug.Log("Exit?"); + if (other.CompareTag("Player")) + { + + } } } diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 0147887..1f214b3 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -4,5 +4,8 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 - m_Scenes: [] + m_Scenes: + - enabled: 1 + path: Assets/Scenes/Game.unity + guid: 72e80415c03009f4d8c429120ef81f97 m_configObjects: {} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 57e7e40..9f2adbd 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -161,7 +161,8 @@ PlayerSettings: resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 - applicationIdentifier: {} + applicationIdentifier: + Android: com.DefaultCompany.hyperracer buildNumber: Standalone: 0 VisionOS: 0 @@ -284,7 +285,99 @@ PlayerSettings: AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 @@ -679,7 +772,7 @@ PlayerSettings: m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: hyper-racer - metroPackageVersion: + metroPackageVersion: 1.0.0.0 metroCertificatePath: metroCertificatePassword: metroCertificateSubject: @@ -687,7 +780,7 @@ PlayerSettings: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: hyper-racer wsaImages: {} - metroTileShortName: + metroTileShortName: hyper-racer metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0