| | |
| | | |
| | | [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; |
| | |
| | | } |
| | | } |
| | | |
| | | private void OnEnable() |
| | | { |
| | | CharacterEvents.characterDrillingToPosition += (DrillingToPosition); |
| | | } |
| | | |
| | | private void OnDisable() |
| | | { |
| | | CharacterEvents.characterDrillingToPosition -= (DrillingToPosition); |
| | | } |
| | | |
| | | private void Awake() |
| | | { |
| | |
| | | animator_rotor = rotorGO.GetComponent<Animator>(); |
| | | touchingDirections = GetComponent<TouchingDirections>(); |
| | | health = GetComponent<Damageable>(); |
| | | boxCollider = GetComponent<BoxCollider2D>(); |
| | | if (SaveSystem.isGameLoaded) |
| | | { |
| | | GameObject uiManager = GameObject.Find("GameManager"); |
| | |
| | | if (IsDrilling) |
| | | { |
| | | rb.velocity = Vector2.zero; |
| | | if (timeSinceDrill > drillingTime) |
| | | if (drillToPosition) |
| | | { |
| | | IsDrilling = false; |
| | | timeSinceDrill = 0; |
| | | if (timeSinceDrill < drillingTime) |
| | | { |
| | | gameObject.transform.position = Vector3.Lerp(drillOriginalPosition, drillTilePosition, timeSinceDrill / drillingTime); |
| | | //Debug.Log("drillTilePosition: " + drillTilePosition); |
| | | //Debug.Log("timeSinceDrill: " + timeSinceDrill); |
| | | timeSinceDrill += Time.deltaTime; |
| | | } |
| | | else |
| | | { |
| | | timeSinceDrill += Time.deltaTime; |
| | | boxCollider.enabled = true; |
| | | IsDrilling = false; |
| | | drillToPosition = false; |
| | | timeSinceDrill = 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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) |
| | | { |
| | |
| | | touchingDirections.groundHits[0].collider.GetContacts(contactPoints); |
| | | break; |
| | | } |
| | | //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() |
| | | //{ |