DemonShanker2/Assets/Scripts/PlayerController.cs

128 lines
3.7 KiB
C#

using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float speed = 10;
public float nextFire;
public float delay;
public GameObject shank;
public Transform playerAngle;
public Transform shankSpawn;
public GameObject vvAura;
public int swigCounter;
private GameController gameController;
public GameObject playerSprite;
enum Direction {Left, Right};
void Start() {
GameObject gameControllerObject = GameObject.FindWithTag("GameController");
if (gameControllerObject != null)
gameController = gameControllerObject.GetComponent <GameController> ();
else
Debug.Log("Cannot find GameController script.");
}
private Animator animator;
void Awake()
{
animator = GameObject.Find("PlayerSprite").GetComponent<Animator>();
}
void MakePlayerSpriteFace(Direction dir)
{
Vector3 scaleVec = playerSprite.transform.localScale;
if (dir == Direction.Left) {
scaleVec.x = -1;
} else if (dir == Direction.Right) {
scaleVec.x = 1;
}
playerSprite.transform.localScale = scaleVec;
}
void Update()
{
if (Input.GetButton("Fire1") && Time.time > nextFire)
{
nextFire = Time.time + delay;
Instantiate(shank, shankSpawn.position, playerAngle.rotation);
shankSpawn.audio.Play ();
animator.Play("player_shank");
}
if (Input.GetButton("ActivateVV") && gameController.swigs > 0 && Time.time > nextFire)
{
nextFire = Time.time + delay * 2;
Instantiate (vvAura, rigidbody.position, rigidbody.rotation);
gameController.TakeSwig();
animator.Play("player_swig");
}
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
if (moveHorizontal < 0 && moveVertical > 0) { // left up
playerAngle.eulerAngles = new Vector3(0f, -135, 0f);
MakePlayerSpriteFace(Direction.Left);
animator.SetBool("isWalkingUp", true);
animator.SetBool("isWalking", false);
}
else if (moveHorizontal < 0 && moveVertical < 0) {// left down
playerAngle.eulerAngles = new Vector3(0f, -225f, 0f);
MakePlayerSpriteFace(Direction.Left);
animator.SetBool("isWalking", true);
animator.SetBool("isWalkingUp", false);
}
else if (moveHorizontal > 0 && moveVertical > 0) {//right up
playerAngle.eulerAngles = new Vector3(0f, -45f, 0f);
MakePlayerSpriteFace(Direction.Right);
animator.SetBool("isWalkingUp", true);
animator.SetBool("isWalking", false);
}
else if (moveHorizontal > 0 && moveVertical < 0) {//right down
playerAngle.eulerAngles = new Vector3(0f, 45f, 0f);
MakePlayerSpriteFace(Direction.Right);
animator.SetBool("isWalking", true);
animator.SetBool("isWalkingUp", false);
}
else if (moveHorizontal < 0) { // Stab left
playerAngle.eulerAngles = new Vector3(0f, -180f, 0f);
MakePlayerSpriteFace(Direction.Left);
animator.SetBool("isWalking", true);
animator.SetBool("isWalkingUp", false);
}
else if (moveHorizontal > 0) { // Stab right
playerAngle.eulerAngles = new Vector3 (0f, 0f, 0f);
MakePlayerSpriteFace(Direction.Right);
animator.SetBool("isWalking", true);
animator.SetBool("isWalkingUp", false);
}
else if (moveVertical < 0) {// Stab down
playerAngle.eulerAngles = new Vector3(0f, -270f, 0f);
animator.SetBool("isWalking", true);
animator.SetBool("isWalkingUp", false);
}
else if (moveVertical > 0) // Stab up
{
playerAngle.eulerAngles = new Vector3(0f, -90f, 0f);
animator.SetBool("isWalkingUp", true);
animator.SetBool("isWalking", false);
}
else {
animator.SetBool("isWalking", false);
animator.SetBool("isWalkingUp", false);
}
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidbody.velocity = movement * speed;
rigidbody.freezeRotation = true;
}
void FixedUpdate() {
}
}