From 7ba6caa8eb76ee88d48780d4d30a24bb7d69496f Mon Sep 17 00:00:00 2001 From: Xevion Date: Fri, 27 Sep 2024 22:22:07 -0500 Subject: [PATCH] Add scripts & prefabs --- Galagan/Assets/Asteroid.prefab | 235 ++++++++++++++++++++++++ Galagan/Assets/Asteroid.prefab.meta | 7 + Galagan/Assets/Player.prefab | 233 +++++++++++++++++++++++ Galagan/Assets/Player.prefab.meta | 7 + Galagan/Assets/Scripts/Asteroid.cs | 69 +++++++ Galagan/Assets/Scripts/Asteroid.cs.meta | 11 ++ Galagan/Assets/Scripts/GameLoop.cs | 34 ++++ Galagan/Assets/Scripts/GameLoop.cs.meta | 12 ++ Galagan/Assets/Scripts/Player.cs | 60 ++++++ Galagan/Assets/Scripts/Player.cs.meta | 11 ++ 10 files changed, 679 insertions(+) create mode 100644 Galagan/Assets/Asteroid.prefab create mode 100644 Galagan/Assets/Asteroid.prefab.meta create mode 100644 Galagan/Assets/Player.prefab create mode 100644 Galagan/Assets/Player.prefab.meta create mode 100644 Galagan/Assets/Scripts/Asteroid.cs create mode 100644 Galagan/Assets/Scripts/Asteroid.cs.meta create mode 100644 Galagan/Assets/Scripts/GameLoop.cs create mode 100644 Galagan/Assets/Scripts/GameLoop.cs.meta create mode 100644 Galagan/Assets/Scripts/Player.cs create mode 100644 Galagan/Assets/Scripts/Player.cs.meta diff --git a/Galagan/Assets/Asteroid.prefab b/Galagan/Assets/Asteroid.prefab new file mode 100644 index 0000000..96414a1 --- /dev/null +++ b/Galagan/Assets/Asteroid.prefab @@ -0,0 +1,235 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3705258663953280876 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2008268791505903439} + - component: {fileID: 2584650323362667019} + - component: {fileID: 7852901807231379805} + - component: {fileID: 5547639391536858382} + - component: {fileID: 7202568895458539576} + m_Layer: 7 + m_Name: Asteroid + m_TagString: Asteroid + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2008268791505903439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3705258663953280876} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2584650323362667019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3705258663953280876} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1e61ebd0871c114d955c536998ca1e4, type: 3} + m_Name: + m_EditorClassIdentifier: + rigidbody: {fileID: 0} + radius: 0.2 + jaggedness: 1.5 + pointCountLow: 8 + pointCountHigh: 12 +--- !u!120 &7852901807231379805 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3705258663953280876} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.10063024 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 4 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 0 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!60 &5547639391536858382 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3705258663953280876} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 1 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 0, y: 0.5} + - {x: -0.47552827, y: 0.15450849} + - {x: -0.2938926, y: -0.40450853} + - {x: 0.29389268, y: -0.40450847} + - {x: 0.47552824, y: 0.15450856} + m_UseDelaunayMesh: 0 +--- !u!50 &7202568895458539576 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3705258663953280876} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0 + m_GravityScale: 0 + m_Material: {fileID: 6200000, guid: 1f757e914f1634440b7cfb1f133a3230, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 diff --git a/Galagan/Assets/Asteroid.prefab.meta b/Galagan/Assets/Asteroid.prefab.meta new file mode 100644 index 0000000..6236317 --- /dev/null +++ b/Galagan/Assets/Asteroid.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1ee11d16feebc8047ae7eea2130976ab +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Galagan/Assets/Player.prefab b/Galagan/Assets/Player.prefab new file mode 100644 index 0000000..aadd465 --- /dev/null +++ b/Galagan/Assets/Player.prefab @@ -0,0 +1,233 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3889903327143779179 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 350774780535494718} + - component: {fileID: -2583820770250674630} + - component: {fileID: -2486798031750081769} + - component: {fileID: 3472295394796250252} + - component: {fileID: 6956043762957484688} + m_Layer: 6 + m_Name: Player + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &350774780535494718 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889903327143779179} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-2583820770250674630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889903327143779179} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ae4589aababf7b4b89afb425a96c128, type: 3} + m_Name: + m_EditorClassIdentifier: + shipWidth: 0.45 + shipHeight: 0.28 + shipHeightRatio: 0.5 +--- !u!120 &-2486798031750081769 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889903327143779179} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.04 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.9811382 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 0 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!60 &3472295394796250252 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889903327143779179} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 0, y: 0.5} + - {x: -0.47552827, y: 0.15450849} + - {x: -0.2938926, y: -0.40450853} + - {x: 0.29389268, y: -0.40450847} + - {x: 0.47552824, y: 0.15450856} + m_UseDelaunayMesh: 0 +--- !u!50 &6956043762957484688 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889903327143779179} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 1 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0 + m_GravityScale: 0 + m_Material: {fileID: 6200000, guid: 1f757e914f1634440b7cfb1f133a3230, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 6 diff --git a/Galagan/Assets/Player.prefab.meta b/Galagan/Assets/Player.prefab.meta new file mode 100644 index 0000000..7562d2b --- /dev/null +++ b/Galagan/Assets/Player.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 00fe39f780b615c4da630f6e3b6e9f12 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Galagan/Assets/Scripts/Asteroid.cs b/Galagan/Assets/Scripts/Asteroid.cs new file mode 100644 index 0000000..011da43 --- /dev/null +++ b/Galagan/Assets/Scripts/Asteroid.cs @@ -0,0 +1,69 @@ +using UnityEngine; +using Random = UnityEngine.Random; + +public class Asteroid : MonoBehaviour +{ + private PolygonCollider2D _polygonCollider; + private LineRenderer _lineRenderer; + public new Rigidbody2D rigidbody; + + [Range(0.1f, 10f)] + public float radius = 2f; + [Range(0.1f, 10f)] + public float jaggedness = 1.5f; + [SerializeField, Range(3, 150)] + public int pointCountLow = 8; + [SerializeField, Range(3, 150)] + public int pointCountHigh = 12; + + private void Awake() + { + _lineRenderer = GetComponent(); + _polygonCollider = GetComponent(); + rigidbody = GetComponent(); + + // Set white color + _lineRenderer.startColor = Color.white; + _lineRenderer.endColor = Color.white; + _lineRenderer.material = new Material(Shader.Find("Sprites/Default")); + } + + void Start() + { + GenerateLine(); + } + + void Update() + { + if (Input.GetKeyDown(KeyCode.Space)) + { + GenerateLine(); + } + } + + void GenerateLine() + { + _lineRenderer.positionCount = Random.Range(pointCountLow, pointCountHigh); + _lineRenderer.loop = true; + + var previousRadius = radius; + for (var i = 0; i < _lineRenderer.positionCount; i++) + { + var angle = i * Mathf.PI * 2 / _lineRenderer.positionCount; + var pointRadius = previousRadius * 0.2f + (radius + Random.Range(0, jaggedness)) * 0.8f; + _lineRenderer.SetPosition(i, new Vector3(pointRadius * Mathf.Cos(angle), pointRadius * Mathf.Sin(angle), 0)); + previousRadius = pointRadius; + } + + // Use the line render to create collider path + var path = new Vector2[_lineRenderer.positionCount + 1]; + for (var i = 0; i < _lineRenderer.positionCount; i++) + { + var p = _lineRenderer.GetPosition(i); + path[i] = new Vector2(p.x, p.y); + } + path[_lineRenderer.positionCount] = path[0]; + + _polygonCollider.SetPath(0, path); + } +} diff --git a/Galagan/Assets/Scripts/Asteroid.cs.meta b/Galagan/Assets/Scripts/Asteroid.cs.meta new file mode 100644 index 0000000..ac0363a --- /dev/null +++ b/Galagan/Assets/Scripts/Asteroid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1e61ebd0871c114d955c536998ca1e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Galagan/Assets/Scripts/GameLoop.cs b/Galagan/Assets/Scripts/GameLoop.cs new file mode 100644 index 0000000..95c4d89 --- /dev/null +++ b/Galagan/Assets/Scripts/GameLoop.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Test : MonoBehaviour +{ + public Asteroid asteroidPrefab; + private float spawningLeft; + private float spawningRight; + private float spawningHeight; + public float inset = 0.8f; + + void Start() + { + InvokeRepeating(nameof(SpawnAsteroids), 0, 1.4f); + + // Get screen corners + var cam = Camera.main; + var topLeft = cam.ScreenToWorldPoint(new Vector3(0, cam.pixelHeight, cam.nearClipPlane)); + var topRight = cam.ScreenToWorldPoint(new Vector3(cam.pixelWidth, cam.pixelHeight * inset, cam.nearClipPlane)); + spawningRight = topRight.x * 0.8f; + spawningLeft = topLeft.x + (1f - inset) * spawningRight; + + spawningHeight = topLeft.y * 1.4f; + } + + private void SpawnAsteroids() + { + var x = Random.Range(spawningLeft, spawningRight); + var asteroid = Instantiate(asteroidPrefab, new Vector3(x, spawningHeight, 0), new Quaternion()); + asteroid.rigidbody.AddForce(new Vector2(Random.Range(-1, 1f) * 20, Random.Range(-90, -110))); + asteroid.rigidbody.AddTorque(Random.Range(-1f, 1f) * 10); + } +} \ No newline at end of file diff --git a/Galagan/Assets/Scripts/GameLoop.cs.meta b/Galagan/Assets/Scripts/GameLoop.cs.meta new file mode 100644 index 0000000..493cc19 --- /dev/null +++ b/Galagan/Assets/Scripts/GameLoop.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1086cfb0176f69c4f8af5f773c55f735 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - asteroidPrefab: {fileID: 2584650323362667019, guid: 1ee11d16feebc8047ae7eea2130976ab, type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Galagan/Assets/Scripts/Player.cs b/Galagan/Assets/Scripts/Player.cs new file mode 100644 index 0000000..e4dc959 --- /dev/null +++ b/Galagan/Assets/Scripts/Player.cs @@ -0,0 +1,60 @@ +using System; +using UnityEngine; + +public class Player : MonoBehaviour +{ + private LineRenderer _lineRenderer; + private PolygonCollider2D _polygonCollider; + private Rigidbody2D _rigidbody; + + [Range(0.01f, 1.2f)] public float shipWidth = 1.3f; + [Range(0.01f, 1.2f)] public float shipHeight = 0.8f; + [Range(0.01f, 1.2f)] public float shipHeightRatio = 0.5f; + + void Awake() + { + _lineRenderer = GetComponent(); + _polygonCollider = GetComponent(); + _rigidbody = GetComponent(); + + _lineRenderer.material = new Material(Shader.Find("Sprites/Default")); + _lineRenderer.startColor = Color.white; + _lineRenderer.endColor = Color.white; + _lineRenderer.useWorldSpace = false; + } + + void Start() + { + GenerateShape(); + } + + void GenerateShape() + { + + var points = new[] + { + new Vector2(0, shipHeight), + new Vector2(-shipWidth / 2, -shipHeight), + new Vector2(0, shipHeight * -shipHeightRatio), + new Vector2(shipWidth / 2, -shipHeight), + new Vector2(0, 0) + }; + points[points.Length -1] = points[0]; + _polygonCollider.SetPath(0, points); + + _lineRenderer.loop = false; + _lineRenderer.positionCount = _polygonCollider.points.Length; + _lineRenderer.SetPositions(Array.ConvertAll(_polygonCollider.points, + point => new Vector3(point.x, point.y, 0))); + } + + private void OnTriggerEnter2D(Collider2D collision) + { + Debug.Log("Player collided with " + collision.gameObject.name); + } + + private void FixedUpdate() + { + transform.position += new Vector3(Input.GetAxis("Horizontal") * 0.4f, 0, 0); + } +} \ No newline at end of file diff --git a/Galagan/Assets/Scripts/Player.cs.meta b/Galagan/Assets/Scripts/Player.cs.meta new file mode 100644 index 0000000..da6d06b --- /dev/null +++ b/Galagan/Assets/Scripts/Player.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ae4589aababf7b4b89afb425a96c128 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: