using UnityEngine; using System.Collections; public class ArenaCombatControl : MonoBehaviour { private Rigidbody2D Player; private Animator myAnimator; [SerializeField] private float speed; private bool LookRight = true; private bool canMove = true; private bool canJump = false; private float attackSpeedCooldown; // fields to modify player stats based on weapons -- now in CharacterLook script!! ***** /* public WeaponStats[] weapons; public int currentWeapon; */ // Use this for initialization void Start() { //weapons[currentWeapon].attackSpeed = 1f; Player = GetComponent<Rigidbody2D>(); myAnimator = GetComponent<Animator>(); //required for animation ******* //SetWeaponStats(); } // Update is called once per frame void Update() { float h = Input.GetAxis("Horizontal"); float i = Input.GetAxis("Vertical"); Movement(h); FlipPlayer(h); RotatePlayerZaxis(h); Attack(); Block(); Jump(); } //controlling the characters movement private void Movement(float horizontal) { if (canMove) { Player.velocity = new Vector2(speed * horizontal, Player.velocity.y); myAnimator.SetFloat("speed", (Mathf.Abs(horizontal))); //required for animation ******* } } private void Attack() { attackSpeedCooldown -= Time.deltaTime; if (Input.GetKeyDown(KeyCode.Space) && attackSpeedCooldown <= 0) { //attackSpeedCooldown = weapons[currentWeapon].attackSpeed; myAnimator.SetBool("attack", true); } else { myAnimator.SetBool("attack", false); } } private void Block() { if (Input.GetKeyDown(KeyCode.E)) { myAnimator.SetBool("block", true); Player.velocity = Vector2.zero; canMove = false; } if (Input.GetKeyUp(KeyCode.E)) { myAnimator.SetBool("block", false); canMove = true; } } private void Jump() { if (Input.GetKeyDown(KeyCode.W)&&canJump) { canJump = false; Player.AddForce(new Vector2(0, 300)); } } //faces the characters body in the appropriate direction private void FlipPlayer(float horizontal) { if (horizontal > 0 && !LookRight || horizontal < 0 && LookRight) { LookRight = !LookRight; Vector3 theScale = transform.localScale; theScale.x *= -1; transform.localScale = theScale; } } //keeps the character from falling over private void RotatePlayerZaxis(float horizonal) { Vector3 myRotation = gameObject.transform.rotation.eulerAngles; Vector3 Pos = transform.localPosition; //if the player does not need to be climbing up an angle, the character will be fixed upright if (Pos.x < -4f || Pos.x > 5f) { transform.localRotation = Quaternion.Euler(0, 0, 0); } else { //allows the character to rotate but not past 90 degrees either direction when climbing if (myRotation.z > 90) { myRotation.z = Mathf.Clamp(0, 0, 0); transform.rotation = Quaternion.Euler(myRotation); } if (myRotation.z < -90) { myRotation.z = Mathf.Clamp(0, 0, 0); transform.rotation = Quaternion.Euler(myRotation); } } } void OnCollisionEnter2D(Collision2D coll){ if (coll.gameObject.tag == "ground") { canJump = true; } } /* can change stats simply in the inspector for dynamic purposes :) //a few proposed weapon stats private void SetWeaponStats() { weapons[0].damageMin = 1; weapons[0].damageMax = 5; weapons[0].attackSpeed = 1; weapons[1].damageMin = 2; weapons[1].damageMax = 5; weapons[1].attackSpeed = 2; weapons[2].damageMin = 3; weapons[2].damageMax = 6; weapons[2].attackSpeed = 2; weapons[3].damageMin = 3; weapons[3].damageMax = 4; weapons[3].attackSpeed = 4; weapons[4].damageMin = 6; weapons[4].damageMax = 12; weapons[4].attackSpeed = 1; weapons[5].damageMin = 5; weapons[5].damageMax = 10; weapons[5].attackSpeed = 3; } */ }