From 74dd3727f62603f64958790f9e588d47c8f000ff Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Sat, 23 Dec 2023 03:14:14 +0000 Subject: [PATCH] Added player movement while drilling --- Assets/Scripts/PlayerController.cs | 64 +++++++++++++++++++++++++------- 1 files changed, 50 insertions(+), 14 deletions(-) diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs index ed9f0d7..5f0246c 100644 --- a/Assets/Scripts/PlayerController.cs +++ b/Assets/Scripts/PlayerController.cs @@ -19,17 +19,22 @@ [NonSerialized] public Rigidbody2D rb; + [NonSerialized] + public Damageable health; + + BoxCollider2D boxCollider; Animator animator; Animator animator_rotor; public GameObject rotorGO; TouchingDirections touchingDirections; - [NonSerialized] - public Damageable health; // Time it takes to drill public float drillingTime = 1f; private float timeSinceDrill = 0f; - + private bool drillToPosition; + private Vector3 drillTilePosition; + private Vector3 drillOriginalPosition; + [SerializeField] private bool _isMoving; public bool IsMoving @@ -89,7 +94,15 @@ } } + private void OnEnable() + { + CharacterEvents.characterDrillingToPosition += (DrillingToPosition); + } + private void OnDisable() + { + CharacterEvents.characterDrillingToPosition -= (DrillingToPosition); + } private void Awake() { @@ -98,6 +111,7 @@ animator_rotor = rotorGO.GetComponent<Animator>(); touchingDirections = GetComponent<TouchingDirections>(); health = GetComponent<Damageable>(); + boxCollider = GetComponent<BoxCollider2D>(); if (SaveSystem.isGameLoaded) { GameObject uiManager = GameObject.Find("GameManager"); @@ -181,14 +195,22 @@ if (IsDrilling) { rb.velocity = Vector2.zero; - if (timeSinceDrill > drillingTime) + if (drillToPosition) { - IsDrilling = false; - timeSinceDrill = 0; - } - else - { - timeSinceDrill += Time.deltaTime; + if (timeSinceDrill < drillingTime) + { + gameObject.transform.position = Vector3.Lerp(drillOriginalPosition, drillTilePosition, timeSinceDrill / drillingTime); + //Debug.Log("drillTilePosition: " + drillTilePosition); + //Debug.Log("timeSinceDrill: " + timeSinceDrill); + timeSinceDrill += Time.deltaTime; + } + else + { + boxCollider.enabled = true; + IsDrilling = false; + drillToPosition = false; + timeSinceDrill = 0; + } } } } @@ -207,15 +229,12 @@ IsMoving = false; IsFlying = false; //moveInput = Vector2.zero; - } } private void Drill(DrillDirection drillDirection) { - IsDrilling = true; ContactPoint2D[] contactPoints = new ContactPoint2D[1]; - Debug.Log("drillDirection: " + drillDirection.ToString()); //rb.GetContacts(contactPoints); switch (drillDirection) { @@ -229,7 +248,24 @@ touchingDirections.groundHits[0].collider.GetContacts(contactPoints); break; } - CharacterEvents.characterDrill.Invoke(contactPoints[0], drillDirection); + //Debug.Log(contactPoints[0].otherRigidbody?.gameObject.name); + if (contactPoints[0].otherRigidbody?.name == "Tilemap") + { + boxCollider.enabled = false; + IsDrilling = true; + CharacterEvents.characterDrill.Invoke(contactPoints[0], drillDirection); + } + } + + private void DrillingToPosition(Vector3 tilePosition) + { + //Debug.Log("DrillingToPosition() called"); + //Debug.Log(gameObject.transform.position); + drillToPosition = true; + drillTilePosition = tilePosition; + //Debug.Log("drillTilePosition: " + drillTilePosition); + drillOriginalPosition = gameObject.transform.position; + //Debug.Log("drillOriginalPosition: " + drillOriginalPosition); } //private void DrillLeftOrRight() -- Gitblit v1.9.3