mirror of
https://github.com/ConjureETS/VZ.git
synced 2026-03-24 02:11:15 +00:00
126 lines
3.4 KiB
C#
126 lines
3.4 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
/// <summary>
|
|
/// This class contains the information of the Vampire Units.
|
|
/// </summary>
|
|
public class VampireSquad : Squad
|
|
{
|
|
// Use this for initialization
|
|
|
|
void Start ()
|
|
{
|
|
InitializeSquad();
|
|
InitializeDefaultTagAndLayer();
|
|
// initialize default hp
|
|
//Hp = defaultHp;
|
|
// initialize default attack
|
|
Attack = defaultAttack;
|
|
// initialize default team
|
|
// initialize default specie
|
|
IsDead = false;
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update ()
|
|
{
|
|
if (IsDead)
|
|
{
|
|
// TODO play dead animation before destroying unit
|
|
DestroyUnit(DyingTime);
|
|
}
|
|
else {
|
|
|
|
if (target != null) {
|
|
|
|
Vector3 newTarget = new Vector3(target.pos.x, transform.position.y, target.pos.z);
|
|
|
|
transform.LookAt(newTarget);
|
|
|
|
transform.position = Vector3.MoveTowards(transform.position, newTarget, speed);
|
|
Debug.Log("I tried to move to :" + target.pos);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void InitializeDefaultTagAndLayer()
|
|
{
|
|
try
|
|
{
|
|
this.Tag = TagLayerManager.VampirePlayer; // set the tag to player 1
|
|
this.Layer = TagLayerManager.VampireLayerIndex;
|
|
}
|
|
catch (IndexOutOfRangeException ex)
|
|
{
|
|
Debug.LogError( "Please set a vampire Tag, check the Tag & layers in the inspector!\n" + ex );
|
|
}
|
|
|
|
// set the tag and the layer of the gameObject to vampire
|
|
if (this.gameObject.tag != Tag)
|
|
{
|
|
this.gameObject.tag = Tag;
|
|
}
|
|
if (this.gameObject.layer != Layer)
|
|
{
|
|
this.gameObject.layer = Layer;
|
|
}
|
|
}
|
|
|
|
/*void CaptureHuman(Unit unit)
|
|
{
|
|
// TODO either add the human as a squad member or change it's tag to vampireHuman
|
|
// when the player is transformed we just make VampireSquad vampireUnit2 = (VampireSquad) unit;
|
|
Debug.Log("Entered in collision with: " + unit.Tag );
|
|
}*/
|
|
|
|
/* void AttackEnemySquad(Unit unit)
|
|
{
|
|
//TODO improve this method to compute the reduce of hp, etc...
|
|
// compute the amount of hp reduced to this unit
|
|
unit.Hp -= Attack; // we remove some hp of the unit that was
|
|
|
|
Debug.Log("Attacked the ennemy : " + unit.Tag);
|
|
}*/
|
|
|
|
void OnTriggerEnter(Collider collider)
|
|
{
|
|
//var objectTag = collider.gameObject;
|
|
// check if the game object have an attached Unit class
|
|
//switch(objectTag.GetType())
|
|
var unitComponent = collider.GetComponent<Unit>();
|
|
|
|
if (unitComponent == null)
|
|
return;
|
|
// check if the unit is not a friendly one
|
|
if (this.Tag == unitComponent.Tag)
|
|
return;
|
|
|
|
if (unitComponent.Tag.Equals(TagLayerManager.Human))
|
|
{
|
|
if (unitComponent.IsCaptured)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
CaptureHuman(unitComponent);
|
|
}
|
|
}
|
|
else // we know that it's an ennemy
|
|
{
|
|
try
|
|
{
|
|
AttackEnemySquad(unitComponent as Squad);
|
|
}
|
|
catch (InvalidCastException exception)
|
|
{
|
|
Debug.LogError(exception.ToString());
|
|
//throw;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|