using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MissileAI : MonoBehaviour
{
private Transform mTransform;
public const float g = 2f;
private GameObject target;
public float speed = 2f;
private float verticalSpeed;
private Vector3 moveDirection;
private float angleSpeed;
private float angle;
private bool isMove;
public GameObject temp;
private Transform selfChild;
private GameObject explosionEffect;
private void Awake()
{
explosionEffect = Resources.Load<GameObject> ("Effects/BigExplosionEffect");
}
public void SetInfo (GameObject targe)
{
selfChild = transform.GetChild (0);
target = targe;
isMove = true;
float tmepDistance = Vector3.Distance (transform.position, target.transform.position);
float tempTime = tmepDistance / speed;
float riseTime, downTime;
riseTime = downTime = tempTime / 2;
verticalSpeed = g * riseTime;
selfChild.LookAt (target.transform.position);
float tempTan = verticalSpeed / speed;
double hu = Mathf.Atan (tempTan);
angle = (float)(180 / Mathf.PI * hu);
transform.eulerAngles = new Vector3 (-angle, transform.eulerAngles.y, transform.eulerAngles.z);
angleSpeed = angle / riseTime;
moveDirection = target.transform.position - transform.position;
time = 0;
//Debug.Log("SetInfo:" + target.transform.position+" transformPos"+transform.position);
}
private float time;
void Update ()
{
if (GameManager.Instance.gameState != EGameState.Gaming) return;
if (!isMove)
return;
if (transform.position.y < target.transform.position.y) {
time = 0;
isMove = false;
//Debug.Log ("missiledestory");
BattleController.Instance.selfBattlePeopleList.Remove (gameObject);
GameObject explosion = Instantiate (explosionEffect);
explosion.transform.parent = BattleController.Instance.generatorParent.transform;
explosion.transform.localPosition = transform.localPosition;
explosion.transform.localScale = Vector3.one;
Damage ();
Destroy (gameObject,0.1f);
return;
}
selfChild.LookAt (target.transform.position);
time += Time.deltaTime;
float test = verticalSpeed - g * time;
transform.Translate (moveDirection.normalized * speed * Time.deltaTime, Space.World);
transform.Translate (Vector3.up * test * Time.deltaTime, Space.World);
float testAngle = -angle + angleSpeed * time;
transform.eulerAngles = new Vector3 (testAngle, transform.eulerAngles.y, transform.eulerAngles.z);
}
public float attackDistance;
public string maskTarget;
private int colsLength;
private HeroAI targetHeroAI;
private BunkerAI targetBunkerAI;
void Damage ()
{
Collider [] cols = Physics.OverlapSphere (transform.position, attackDistance, 1 << LayerMask.NameToLayer (maskTarget));
colsLength = cols.Length;
if (colsLength <= 0) {
return;
} else {
targetHeroAI = null;
targetBunkerAI = null;
for (int i = 0; i < colsLength; i++) {
targetHeroAI = null;
targetBunkerAI = null;
targetHeroAI = cols [i].GetComponent<HeroAI> ();
targetBunkerAI =cols [i].GetComponent<BunkerAI> ();
if(targetHeroAI!=null)
{
targetHeroAI.HP -= 100;
//bomb bomb bomb
}
else if(targetBunkerAI !=null)
{
targetBunkerAI.HP -= 100;
//bomb bomb bomb
}
}
}
}
//private void OnTriggerEnter(Collider other)
//{
// if (other.transform.tag == "RealPlayer1")
// {
// mTransform.gameObject.SetActive(false);
// Debug.Log("OnCollisionEnterRealPlayer1");
// }
//}
//private void OnTriggerEnter (Collider col)
//{
// //Debug.Log ("collision:");
// if (col.transform.name.Contains ("Fish")) {
// }
//}
}
using System.Collections.Generic;
using UnityEngine;
public class MissileAI : MonoBehaviour
{
private Transform mTransform;
public const float g = 2f;
private GameObject target;
public float speed = 2f;
private float verticalSpeed;
private Vector3 moveDirection;
private float angleSpeed;
private float angle;
private bool isMove;
public GameObject temp;
private Transform selfChild;
private GameObject explosionEffect;
private void Awake()
{
explosionEffect = Resources.Load<GameObject> ("Effects/BigExplosionEffect");
}
public void SetInfo (GameObject targe)
{
selfChild = transform.GetChild (0);
target = targe;
isMove = true;
float tmepDistance = Vector3.Distance (transform.position, target.transform.position);
float tempTime = tmepDistance / speed;
float riseTime, downTime;
riseTime = downTime = tempTime / 2;
verticalSpeed = g * riseTime;
selfChild.LookAt (target.transform.position);
float tempTan = verticalSpeed / speed;
double hu = Mathf.Atan (tempTan);
angle = (float)(180 / Mathf.PI * hu);
transform.eulerAngles = new Vector3 (-angle, transform.eulerAngles.y, transform.eulerAngles.z);
angleSpeed = angle / riseTime;
moveDirection = target.transform.position - transform.position;
time = 0;
//Debug.Log("SetInfo:" + target.transform.position+" transformPos"+transform.position);
}
private float time;
void Update ()
{
if (GameManager.Instance.gameState != EGameState.Gaming) return;
if (!isMove)
return;
if (transform.position.y < target.transform.position.y) {
time = 0;
isMove = false;
//Debug.Log ("missiledestory");
BattleController.Instance.selfBattlePeopleList.Remove (gameObject);
GameObject explosion = Instantiate (explosionEffect);
explosion.transform.parent = BattleController.Instance.generatorParent.transform;
explosion.transform.localPosition = transform.localPosition;
explosion.transform.localScale = Vector3.one;
Damage ();
Destroy (gameObject,0.1f);
return;
}
selfChild.LookAt (target.transform.position);
time += Time.deltaTime;
float test = verticalSpeed - g * time;
transform.Translate (moveDirection.normalized * speed * Time.deltaTime, Space.World);
transform.Translate (Vector3.up * test * Time.deltaTime, Space.World);
float testAngle = -angle + angleSpeed * time;
transform.eulerAngles = new Vector3 (testAngle, transform.eulerAngles.y, transform.eulerAngles.z);
}
public float attackDistance;
public string maskTarget;
private int colsLength;
private HeroAI targetHeroAI;
private BunkerAI targetBunkerAI;
void Damage ()
{
Collider [] cols = Physics.OverlapSphere (transform.position, attackDistance, 1 << LayerMask.NameToLayer (maskTarget));
colsLength = cols.Length;
if (colsLength <= 0) {
return;
} else {
targetHeroAI = null;
targetBunkerAI = null;
for (int i = 0; i < colsLength; i++) {
targetHeroAI = null;
targetBunkerAI = null;
targetHeroAI = cols [i].GetComponent<HeroAI> ();
targetBunkerAI =cols [i].GetComponent<BunkerAI> ();
if(targetHeroAI!=null)
{
targetHeroAI.HP -= 100;
//bomb bomb bomb
}
else if(targetBunkerAI !=null)
{
targetBunkerAI.HP -= 100;
//bomb bomb bomb
}
}
}
}
//private void OnTriggerEnter(Collider other)
//{
// if (other.transform.tag == "RealPlayer1")
// {
// mTransform.gameObject.SetActive(false);
// Debug.Log("OnCollisionEnterRealPlayer1");
// }
//}
//private void OnTriggerEnter (Collider col)
//{
// //Debug.Log ("collision:");
// if (col.transform.name.Contains ("Fish")) {
// }
//}
}