diff --git a/Assets/Prefabs/Mi.prefab b/Assets/Prefabs/Mi.prefab index 4b4e0b2..63fef0e 100644 --- a/Assets/Prefabs/Mi.prefab +++ b/Assets/Prefabs/Mi.prefab @@ -23,7 +23,7 @@ GameObject: - component: {fileID: 58793106304222314} - component: {fileID: 50374050283590292} - component: {fileID: 233121803711999886} - m_Layer: 0 + m_Layer: 8 m_Name: Mi m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index 28c75ae..3a89200 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -336,6 +336,106 @@ Prefab: m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 6ffa9e4f03b5e9e48963b7243568dc62, type: 2} m_IsPrefabParent: 0 +--- !u!1 &1025653815 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1025653818} + - component: {fileID: 1025653817} + - component: {fileID: 1025653816} + m_Layer: 0 + m_Name: Grass-Middle (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!61 &1025653816 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025653815} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + 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.5, y: 0.5} + oldSize: {x: 0.5, y: 0.5} + newSize: {x: 0.5, y: 0.5} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.5, y: 0.5} + m_EdgeRadius: 0 +--- !u!212 &1025653817 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025653815} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 9c2dea53371f58841be290a540505639, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.5, y: 0.5} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 +--- !u!4 &1025653818 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025653815} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: -11.38, y: 4.5298, z: 0} + m_LocalScale: {x: 9709.372, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} --- !u!1 &1138483822 GameObject: m_ObjectHideFlags: 0 @@ -536,3 +636,103 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!1 &1889974661 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1889974664} + - component: {fileID: 1889974663} + - component: {fileID: 1889974662} + m_Layer: 0 + m_Name: Grass-Middle (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!61 &1889974662 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1889974661} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + 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.5, y: 0.5} + oldSize: {x: 0.5, y: 0.5} + newSize: {x: 0.5, y: 0.5} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.5, y: 0.5} + m_EdgeRadius: 0 +--- !u!212 &1889974663 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1889974661} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 9c2dea53371f58841be290a540505639, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.5, y: 0.5} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 +--- !u!4 &1889974664 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1889974661} + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 11.51, y: 4.53, z: 0} + m_LocalScale: {x: 9709.372, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} diff --git a/Assets/Scripts/Earthworm.cs b/Assets/Scripts/Earthworm.cs index 96ba411..031d31e 100644 --- a/Assets/Scripts/Earthworm.cs +++ b/Assets/Scripts/Earthworm.cs @@ -6,7 +6,7 @@ public class Earthworm : MonoBehaviour public GameObject LinePrefab; public GameObject MiPrefab; public float force = 10; - public float distance = 20; + public float ropeSpeed = 2; public LayerMask mask; private Vector3 position; @@ -17,6 +17,8 @@ public class Earthworm : MonoBehaviour { position = transform.GetChild(transform.childCount / 2).position; + Camera.main.transform.position = new Vector3(Camera.main.transform.position.x, position.y, Camera.main.transform.position.z); + #region Manette //float horizontal = Input.GetAxis("Horizontal"); //float vertical = Input.GetAxis("Vertical"); @@ -25,14 +27,15 @@ public class Earthworm : MonoBehaviour Vector3 camera = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 direction = camera - position; - if (Input.GetKeyDown(KeyCode.A)) - Grab(KeyCode.A, direction); - if (Input.GetKeyDown(KeyCode.Z)) - Grab(KeyCode.Z, direction); - if (Input.GetKeyDown(KeyCode.E)) - Grab(KeyCode.E, direction); - if (Input.GetKeyDown(KeyCode.R) && transform.childCount > 3) - Grab(KeyCode.R, direction); + if (Input.GetKeyDown(KeyCode.Q)) + Grab(KeyCode.Q, direction); + if (Input.GetKeyDown(KeyCode.D)) + Grab(KeyCode.D, direction); + + if (Input.GetKey(KeyCode.Z)) + ChangeRopeSize(-1); + if (Input.GetKey(KeyCode.S)) + ChangeRopeSize(1); if (Input.GetKeyDown(KeyCode.Space)) AddMi(); @@ -40,79 +43,49 @@ public class Earthworm : MonoBehaviour if (Input.GetKeyDown(KeyCode.C)) RemoveMi(); - if (Input.GetKeyUp(KeyCode.A) && actions.ContainsKey(KeyCode.A)) + if (Input.GetKeyUp(KeyCode.Q) && actions.ContainsKey(KeyCode.Q)) { - Destroy(actions[KeyCode.A].joint); - Destroy(actions[KeyCode.A].line); - actions.Remove(KeyCode.A); + Destroy(actions[KeyCode.Q].joint); + Destroy(actions[KeyCode.Q].line); + actions.Remove(KeyCode.Q); } - if (Input.GetKeyUp(KeyCode.Z) && actions.ContainsKey(KeyCode.Z)) + if (Input.GetKeyUp(KeyCode.D) && actions.ContainsKey(KeyCode.D)) { - Destroy(actions[KeyCode.Z].joint); - Destroy(actions[KeyCode.Z].line); - actions.Remove(KeyCode.Z); - } - if (Input.GetKeyUp(KeyCode.E) && actions.ContainsKey(KeyCode.E)) - { - Destroy(actions[KeyCode.E].joint); - Destroy(actions[KeyCode.E].line); - actions.Remove(KeyCode.E); - } - if (Input.GetKeyUp(KeyCode.R) && actions.ContainsKey(KeyCode.R)) - { - Destroy(actions[KeyCode.R].joint); - Destroy(actions[KeyCode.R].line); - actions.Remove(KeyCode.R); + Destroy(actions[KeyCode.D].joint); + Destroy(actions[KeyCode.D].line); + actions.Remove(KeyCode.D); } - foreach(var item in actions) - { - item.Value.line.GetComponent().SetPosition(0, position); - } + if(actions.ContainsKey(KeyCode.Q)) + actions[KeyCode.Q].line.GetComponent().SetPosition(0, transform.GetChild(0).position); + if (actions.ContainsKey(KeyCode.D)) + actions[KeyCode.D].line.GetComponent().SetPosition(0, transform.GetChild(transform.childCount - 1).position); } void Grab(KeyCode key, Vector2 direction) { - RaycastHit2D hit = Physics2D.Raycast(position, direction, 20, mask); + RaycastHit2D hit = Physics2D.Raycast(position, direction, key == KeyCode.Q ? 20 : 150, mask); if (hit.collider != null) { DistanceJoint2D joint = null; switch (key) { - case KeyCode.A: + case KeyCode.Q: joint = (DistanceJoint2D)transform.GetChild(0).gameObject.AddComponent(typeof(DistanceJoint2D)); - if (actions.ContainsKey(KeyCode.A)) + if (actions.ContainsKey(KeyCode.Q)) { - Destroy(actions[KeyCode.A].joint); - Destroy(actions[KeyCode.A].line); - actions.Remove(KeyCode.A); + Destroy(actions[KeyCode.Q].joint); + Destroy(actions[KeyCode.Q].line); + actions.Remove(KeyCode.Q); } break; - case KeyCode.Z: - joint = (DistanceJoint2D)transform.GetChild(transform.childCount == 3 ? 1 : transform.childCount / 4).gameObject.AddComponent(typeof(DistanceJoint2D)); - if (actions.ContainsKey(KeyCode.Z)) - { - Destroy(actions[KeyCode.Z].joint); - Destroy(actions[KeyCode.Z].line); - actions.Remove(KeyCode.Z); - } - break; - case KeyCode.E: - joint = (DistanceJoint2D)transform.GetChild(transform.childCount * 3 / 4).gameObject.AddComponent(typeof(DistanceJoint2D)); - if (actions.ContainsKey(KeyCode.E)) - { - Destroy(actions[KeyCode.E].joint); - Destroy(actions[KeyCode.E].line); - actions.Remove(KeyCode.E); - } - break; - case KeyCode.R: + case KeyCode.D: joint = (DistanceJoint2D)transform.GetChild(transform.childCount - 1).gameObject.AddComponent(typeof(DistanceJoint2D)); - if (actions.ContainsKey(KeyCode.R)) + if (actions.ContainsKey(KeyCode.D)) { - Destroy(actions[KeyCode.R].joint); - Destroy(actions[KeyCode.R].line); - actions.Remove(KeyCode.R); + Destroy(actions[KeyCode.D].joint); + Destroy(actions[KeyCode.D].line); + actions.Remove(KeyCode.D); } break; default: @@ -130,6 +103,18 @@ public class Earthworm : MonoBehaviour } } + void ChangeRopeSize(int direction) + { + if (actions.ContainsKey(KeyCode.Q)) + { + DistanceJoint2D joint = actions[KeyCode.Q].joint; + if (direction > 0) + joint.distance += Time.deltaTime * ropeSpeed; + else + joint.distance -= Time.deltaTime * ropeSpeed; + } + } + void AddMi() { Transform tsu = transform.GetChild(transform.childCount - 1);