using UnityEngine; using UnityEngine.UI; /** * Skrypt kontroli gracza * @Author: Mateusz Buturla */ //Naprawic predkosc ataku public class PlayerController : MonoBehaviour { public e_clasa m_klasa; public string m_nazwaGracza; private ZdrowieGracza m_zdrowieGracza; private Statystyki m_statystyki; private Animator m_anim; private ZmianaNazwy m_zmianaNazwy; private GameObject m_komunikat; public string m_komunikatWejsciaDoPortalu; public string m_komunikatZmianaNazwy; public float m_podstawowaPredkosc; private float m_predkosc; private float m_czasDoStrzalu; [HideInInspector] public Atak m_atak; void Start () { m_komunikat = GameObject.Find("TextKomunikat"); m_komunikat.GetComponent().text = null; m_zdrowieGracza = GetComponent(); m_statystyki = GetComponent(); m_anim = GetComponent(); m_zmianaNazwy = GetComponent(); } void Update () { if (m_zdrowieGracza.m_zdrowie > 0) { if (m_czasDoStrzalu > 0) { m_czasDoStrzalu -= Time.deltaTime; } } //Ustwianie pociska m_atak.m_atakMinDmg = m_statystyki.m_minDMG + m_statystyki.m_sila; m_atak.m_atakMaxDmg = m_statystyki.m_maxDMG + m_statystyki.m_sila; m_predkosc = m_podstawowaPredkosc + m_statystyki.m_predkosc; } private void FixedUpdate() { if (m_zdrowieGracza.m_zdrowie > 0 && !m_zmianaNazwy.m_zmienianieNazwy) { float p_horizontal = Input.GetAxis("Horizontal"); float p_vertical = Input.GetAxis("Vertical"); if (p_horizontal != 0 || p_vertical != 0) { transform.Translate(new Vector2(p_horizontal * (m_predkosc / 10) * Time.deltaTime, p_vertical * (m_predkosc / 10) * Time.deltaTime)); } switch (m_klasa) { case e_clasa.Czarodzej: break; case e_clasa.Samurai: if (Input.GetAxis("Horizontal") > 0) { m_anim.SetBool("MoveRight", true); } else { m_anim.SetBool("MoveRight", false); } if (Input.GetAxis("Horizontal") < 0) { m_anim.SetBool("MoveLeft", true); } else { m_anim.SetBool("MoveLeft", false); } if (Input.GetAxis("Vertical") > 0) { m_anim.SetBool("MoveUp", true); } else { m_anim.SetBool("MoveUp", false); } if (Input.GetAxis("Vertical") < 0) { m_anim.SetBool("MoveDown", true); } else { m_anim.SetBool("MoveDown", false); } break; } if (Input.GetMouseButton(0)) { if (m_czasDoStrzalu <= 0) { Debug.Log("ATAK"); Vector2 target = Camera.main.ScreenToWorldPoint(new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y)); Vector2 myPos = new Vector2(transform.position.x, transform.position.y); Vector2 direction = target - myPos; direction = new Vector2(direction.x, direction.y * (-1)); direction.Normalize(); GameObject atak = (GameObject)Instantiate(m_atak.m_atakPrefab, transform.position + (Vector3)(direction * 0.5f), Quaternion.identity); atak.AddComponent(); atak.AddComponent(); Pocisk pocisk = atak.GetComponent(); pocisk.m_atakMaxDmg = m_atak.m_atakMaxDmg; pocisk.m_atakMinDmg = m_atak.m_atakMinDmg; pocisk.m_atakGracza = true; Rigidbody2D atakRgidbody = atak.GetComponent(); atakRgidbody.gravityScale = 0; atakRgidbody.velocity = direction * m_atak.m_atakPredkosc; Destroy(atak, 3); m_czasDoStrzalu = m_atak.m_atakCzasPrzeladowania; Debug.Log(m_czasDoStrzalu); } } } else { m_anim.SetBool("MoveDown", false); m_anim.SetBool("MoveUp", false); m_anim.SetBool("MoveLeft", false); m_anim.SetBool("MoveRight", false); } } private void OnTriggerExit2D(Collider2D collision) { if (m_zdrowieGracza.m_zdrowie > 0 && !m_zmianaNazwy.m_zmienianieNazwy) { if (collision.tag == "Portal") { m_komunikat.GetComponent().text = null; } if (collision.tag == "ZmianaNazwy") { m_komunikat.GetComponent().text = null; } } } private void OnTriggerStay2D(Collider2D collision) { if (m_zdrowieGracza.m_zdrowie > 0 && !m_zmianaNazwy.m_zmienianieNazwy) { if (collision.tag == "Portal") { m_komunikat.GetComponent().text = m_komunikatWejsciaDoPortalu; if (Input.GetKey(KeyCode.H)) { GameObject portal; portal = collision.gameObject; Portal portal_s = portal.GetComponent(); transform.position = new Vector3(portal_s.m_pozycjaTeleportacji.x, portal_s.m_pozycjaTeleportacji.y, -1); } } if (collision.tag == "ZmianaNazwy") { m_komunikat.GetComponent().text = m_komunikatZmianaNazwy; } } } } [System.Serializable] public enum e_clasa { Brak, Kazda, Czarodzej, Samurai, }