Newer
Older
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(StepBackScript))]
[RequireComponent(typeof(CrossOverScript))]
[RequireComponent(typeof(BehindBackScript))]
[RequireComponent(typeof(IAMovementScript))]
[RequireComponent(typeof(RoubarBolaScript))]
[RequireComponent(typeof(BlockScript))]
public class OpponentController : Controller
{
private float offsetDistance;
private Rigidbody2D rb;
void Start()
{
setup();
currentHand = 1;
myTurn = false;
canMove = true;
canSkill = true;
changeTurn();
}
private void setup()
{
animatorController = GetComponent<Animator>();
rb = GetComponent<Rigidbody2D>();
gameManager = FindObjectOfType<GameManager>();
}
private void Update()
{
/*
inputs.steal = UnityEngine.Random.Range(0, 2);
inputs.crossOver = UnityEngine.Random.Range(0, 2);
*/
}
public override void changeTurn()
{
if (myTurn)
{
GetComponent<StepBackScript>().enabled = true;
GetComponent<CrossOverScript>().enabled = true;
GetComponent<BehindBackScript>().enabled = true;
ForceBarController.shootAction -= block;
BehindBackScript.action -= steal;
animatorController.SetTrigger("AtkTurn");
myTurn = false;
StartCoroutine(atkTurn());
}
else
{
GetComponent<RoubarBolaScript>().enabled = true;
GetComponent<IAMovementScript>().enabled = true;
GetComponent<BlockScript>().enabled = true;
ForceBarController.shootAction += block;
BehindBackScript.action += steal;
animatorController.SetTrigger("DefTurn");
myTurn = true;
StopCoroutine(atkTurn());
}
//do something
}
private IEnumerator atkTurn()
{
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
while (true)
{
yield return movement(Random.Range(0, 8));
}
}
private IEnumerator movement(int choice)
{
switch (choice)
{
//W - Move
case 0:
rb.velocity = Vector2.up * speed;
transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
yield return null;
break;
//A - Move
case 1:
rb.velocity = Vector2.left * speed;
transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
yield return null;
break;
//S - Move
case 2:
rb.velocity = Vector2.down * speed;
transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
yield return null;
break;
//D - Move
case 3:
rb.velocity = Vector2.right * speed;
transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
yield return null;
break;
//J - StepBack
case 4:
inputs.stepBack = 1;
yield return null;
break;
//K - BehindBack
case 5:
inputs.behindBack = 1;
yield return null;
break;
//L - CrossOver
case 6:
inputs.crossOver = 1;
yield return null;
break;
//Space - Shoot
default:
gameManager.shoot(Random.Range(0f, 1f), findThrowPoint(), target);
yield return new WaitForSecondsRealtime(3);
break;
}
}
public virtual void OnDisable()
{
GetComponent<StepBackScript>().enabled = false;
GetComponent<CrossOverScript>().enabled = false;
GetComponent<BehindBackScript>().enabled = false;
GetComponent<RoubarBolaScript>().enabled = false;
GetComponent<IAMovementScript>().enabled = false;
GetComponent<BlockScript>().enabled = false;
}
private void block()
{
//do something
if (GetComponent<Animation>() != null)
{
GetComponent<Animation>().Stop();
}
StartCoroutine(new WaitForSecondsRealtime(UnityEngine.Random.Range(0, 1)));
inputs.block = 1;
private void steal()
{
//do something
if (GetComponent<Animation>() != null)
{
GetComponent<Animation>().Stop();
}
//StartCoroutine(new WaitForSecondsRealtime(UnityEngine.Random.Range(0, 1)));
inputs.steal = UnityEngine.Random.Range(0, 2);
}
public void moveToPosition(Transform atkPosition, Transform defPosition)
{
if (myTurn)
{
rb.MovePosition(atkPosition.position);
}
else
{
rb.MovePosition(defPosition.position);
}
}
private void disableBallCollider()
{
foreach (Transform t in GetComponentInChildren<Transform>())
{
if (t.CompareTag("BallCollider"))
{
t.GetComponent<BoxCollider2D>().enabled = false;
return;
}
}
}
private void enableBallCollider()
{
foreach (Transform t in GetComponentInChildren<Transform>())
{
if (t.CompareTag("BallCollider"))
{
t.GetComponent<BoxCollider2D>().enabled = true;
return;
}
}
}
private Transform findThrowPoint()
{
foreach (Transform t in GetComponentInChildren<Transform>())
{
if (t.CompareTag("ThrowPoint"))
{
return t;
}
}
return null;
}