예제 #1
0
    // Use this for initialization
    void Start()
    {
        unitBrain = GetComponent <UnitBrain> ();

        currentUnit = null;
        //transform.position = new Vector3 (transform.position.x + (((unitBrain.axis % 2) - 1) * 0.3f * unitBrain.moveDirection), transform.position.y - ((unitBrain.axis % 2) * 0.3f * unitBrain.moveDirection), 0f);
    }
예제 #2
0
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     if (!unitBrain)
     {
         unitBrain = animator.gameObject.GetComponent <UnitBrain>();
     }
     unitBrain.InAttackState = true;
 }
예제 #3
0
 public virtual void StateInit()
 {
     unitControl = GetComponent <UnitControl>();
     animator    = GetComponent <Animator>();
     brain       = GetComponent <UnitBrain>();
     navAgent    = GetComponent <NavMeshAgent>();
     rbody       = GetComponent <Rigidbody>();
     terrainMask = LayerMask.GetMask("Terrain");
 }
예제 #4
0
 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     unitObject = animator.gameObject;
     navAgent   = unitObject.GetComponent <NavMeshAgent>();
     unitBrain  = unitObject.GetComponent <UnitBrain>();
     unitWeapon = unitObject.GetComponent <UnitWeaponBehavior>();
     //unitHUD = unitBrain.GetComponent<UnitHUD>();
     unitTarget = unitBrain.CurrentTarget;
 }
예제 #5
0
 // Use this for initialization
 void Start()
 {
     unitBrain = GetComponent<UnitBrain> ();
     if (unitBrain.name == "Unit(Clone)") {
         for (int i=-1; i<2; i+=1) {
             GameObject newUnit = Instantiate (gameObject);
             newUnit.transform.position = new Vector3 (transform.position.x + ((unitBrain.axis % 2) * 0.6f * i), transform.position.y - (((unitBrain.axis % 2) - 1) * 0.6f * i), 0f);
             newUnit.GetComponent<UnitBrain>().copy = true ;
         }
         Destroy (gameObject);
     }
 }
예제 #6
0
    public void Init(UnitFactory.UnitStatistic newStats)
    {
        maxArmorLevel  = newStats.armor;
        maxEnergyLevel = newStats.energy;

        armorLevel  = maxArmorLevel;
        energyLevel = maxEnergyLevel;

        visualRange   = newStats.visualRange;
        meleeRange    = newStats.meleeRange;
        missileRange  = newStats.missileRange;
        chargeRange   = newStats.chargeRange;
        missilePrefab = newStats.missileType;

        gameManager = GameManager.Instance;

        navAgent                  = gameObject.AddComponent <NavMeshAgent>();
        navAgent.radius           = navRadius;
        navAgent.speed            = moveSpeed;
        navAgent.angularSpeed     = rotationSpeed;
        navAgent.stoppingDistance = 0.35f;

        animator          = gameObject.GetComponent <Animator>();
        rbody             = gameObject.AddComponent <Rigidbody>();
        rbody.mass        = 100;
        rbody.drag        = 10;
        rbody.constraints = RigidbodyConstraints.FreezeRotation;

        collision        = gameObject.AddComponent <CapsuleCollider>();
        collision.radius = 0.35f;
        collision.height = 1.8f;
        collision.center = new Vector3(0, 0.9f, 0);

        animator.SetFloat("CycleOffset", Random.value);

        lastPosition = transform.position;

        foreach (Transform child in transform)
        {
            if (child.name.Contains("Launch_Point"))
            {
                attach_LaunchPoint = child;
            }
            if (child.name.Contains("Attach_Center"))
            {
                attach_Center = child;
            }
        }

        brain = gameObject.AddComponent <UnitBrain>();
        brain.Init(newStats);
    }
예제 #7
0
 // Use this for initialization
 void Start()
 {
     unitBrain = GetComponent <UnitBrain> ();
     if (unitBrain.name == "Unit(Clone)")
     {
         for (int i = -1; i < 2; i += 1)
         {
             GameObject newUnit = Instantiate(gameObject);
             newUnit.transform.position = new Vector3(transform.position.x + ((unitBrain.axis % 2) * 0.6f * i), transform.position.y - (((unitBrain.axis % 2) - 1) * 0.6f * i), 0f);
             newUnit.GetComponent <UnitBrain>().copy = true;
         }
         Destroy(gameObject);
     }
 }
예제 #8
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown(input))
        {
            if (unitCooldowns [selector.currentlySelected] <= 0f)
            {
                newUnit = (GameObject)Instantiate(unit1, transform.position, Quaternion.identity);
                UnitBrain brain = newUnit.GetComponent <UnitBrain> ();
                //brain.type = selector.currentlySelected;
                brain.speed     = race.GetComponent <Race> ().unitSpeed [selector.currentlySelected];
                brain.armor     = race.GetComponent <Race> ().unitArmor [selector.currentlySelected];
                brain.maxHealth = race.GetComponent <Race> ().unitMaxHealth [selector.currentlySelected];
                brain.atkDelay  = race.GetComponent <Race> ().unitAtkDelay [selector.currentlySelected];
                brain.damage    = race.GetComponent <Race> ().unitAtkDamage [selector.currentlySelected];
                brain.range     = race.GetComponent <Race> ().unitRange [selector.currentlySelected];
                //brain.createAbility = race.GetComponent<Race> ().createAbility [selector.currentlySelected];
                //brain.collisionAbility = race.GetComponent<Race> ().collisionAbility [selector.currentlySelected];
                //brain.passiveAbility = race.GetComponent<Race> ().passiveAbility [selector.currentlySelected];
                //brain.deathAbility = race.GetComponent<Race> ().deathAbility [selector.currentlySelected];
                //brain.raceGimmick = race.GetComponent<Race> ().raceGimmick;
                brain.mySprite = race.GetComponent <Race> ().unitSprite [selector.currentlySelected];
                //brain.healthBar = newUnit.gameObject.transform.GetChild(0).GetChild(0).gameObject.GetComponent<Slider>() ;
                brain.axis    = GetComponent <ArrowMovement> ().axis;
                brain.team    = team;
                brain.row     = gameObject.GetComponent <ArrowMovement> ().currentRow;
                brain.creator = gameObject;

                newUnit.AddComponent(System.Type.GetType(race.GetComponent <Race> ().raceName + selector.currentlySelected));
                newUnit.AddComponent(System.Type.GetType(race.GetComponent <Race> ().raceName + "Gimmick"));

                for (int i = 0; i < unitCooldowns.Length; i++)
                {
                    unitCooldowns[i] = race.GetComponent <Race>().unitCooldown[i];
                }
            }
        }

        for (int i = 0; i < unitCooldowns.Length; i++)
        {
            unitCooldowns[i] -= Time.deltaTime;
            selector.transform.GetChild(i).transform.GetChild(0).transform.localScale = new Vector3(Mathf.Clamp(((unitCooldowns[i] / race.GetComponent <Race>().unitCooldown[i]) + 0.1f), 0f, 1f), Mathf.Clamp(((unitCooldowns[i] / race.GetComponent <Race>().unitCooldown[i]) + 0.1f), 0f, 1f), 0f);
        }
        selector.GetComponent <selectorBrain>().bigPreview.transform.GetChild(0).transform.localScale = new Vector3(Mathf.Clamp(((unitCooldowns[selector.GetComponent <selectorBrain>().currentlySelected] / race.GetComponent <Race>().unitCooldown[selector.GetComponent <selectorBrain>().currentlySelected]) + 0.1f), 0f, 1f), Mathf.Clamp(((unitCooldowns[selector.GetComponent <selectorBrain>().currentlySelected] / race.GetComponent <Race>().unitCooldown[selector.GetComponent <selectorBrain>().currentlySelected]) + 0.1f), 0f, 1f), 0f);
    }
예제 #9
0
 // Update is called once per frame
 void Update()
 {
     sandbagDelay -= Time.deltaTime;
     if (sandbagDelay <= 0)
     {
         sandbagDelay = (Random.value * (5f - 2.5f)) + 2.5f;
         GameObject sandBag   = Instantiate(Resources.Load <GameObject>("unit"));
         UnitBrain  sandBrain = sandBag.GetComponent <UnitBrain>();
         sandBrain.range            = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitRange[6];
         sandBrain.atkDelay         = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitAtkDelay[6];
         sandBrain.damage           = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitAtkDamage[6];
         sandBrain.speed            = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitSpeed[6];
         sandBrain.maxHealth        = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitMaxHealth[6];
         sandBrain.armor            = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitArmor[6];
         sandBrain.mySprite         = unitBrain.creator.GetComponent <UnitCreator>().race.GetComponent <Race>().unitSprite[6];
         sandBrain.team             = unitBrain.team;
         sandBag.transform.position = gameObject.transform.position;
         sandBrain.row     = unitBrain.row;
         sandBrain.creator = unitBrain.creator;
         sandBag.AddComponent <NedrexGimmick>();
         sandBag.AddComponent <Nedrex6>();
     }
 }
예제 #10
0
 // Use this for initialization
 void Start()
 {
     //Debug.Log ("Start");
     teleChance = 0.2f;
     unitBrain  = GetComponent <UnitBrain> ();
 }
예제 #11
0
 // Use this for initialization
 void Start()
 {
     unitBrain = GetComponent<UnitBrain> ();
     transform.Rotate(new Vector3(0f,0f,(Random.value*10f)-5f)) ; //me.transform.rotation.eulerAngles.z
 }
예제 #12
0
 // Use this for initialization
 void Start()
 {
     //Debug.Log ("Start");
     unitBrain = GetComponent <UnitBrain> ();
 }
예제 #13
0
 // Use this for initialization
 void Start()
 {
     //Debug.Log ("Start");
     teleChance = 0.2f;
     unitBrain = GetComponent<UnitBrain> ();
 }
예제 #14
0
 // Use this for initialization
 void Start()
 {
     //Debug.Log ("Start");
     unitBrain = GetComponent<UnitBrain> ();
     regenRate = 30;
 }
예제 #15
0
    // Use this for initialization
    void Start()
    {
        teleCount = 1;

        unitBrain = GetComponent <UnitBrain> ();
    }
예제 #16
0
    // Use this for initialization
    void Start()
    {
        teleCount = 1;

        unitBrain = GetComponent<UnitBrain> ();
    }
예제 #17
0
 void Start()
 {
     unitBrain = GetComponent <UnitBrain>();
 }
예제 #18
0
 // Use this for initialization
 void Start()
 {
     unitBrain = GetComponent <UnitBrain> ();
     transform.Rotate(new Vector3(0f, 0f, (Random.value * 10f) - 5f));    //me.transform.rotation.eulerAngles.z
 }
예제 #19
0
 // Use this for initialization
 void Start()
 {
     unitBrain    = GetComponent <UnitBrain> ();
     sandbagDelay = (Random.value * (5f - 2.5f)) + 2.5f;
 }
예제 #20
0
 void Awake()
 {
     status    = GetComponent <Status>();
     unitBrain = GetComponent <UnitBrain>();
 }
예제 #21
0
 // Use this for initialization
 void Start()
 {
     //Debug.Log ("Start");
     unitBrain = GetComponent <UnitBrain> ();
     regenRate = 30;
 }
예제 #22
0
 void Awake()
 {
     nextSpecialFire = specialFireRate + Time.time;
     status          = GetComponent <Status>();
     unitBrain       = GetComponent <UnitBrain>();
 }
예제 #23
0
 // Use this for initialization
 void Start()
 {
     unitBrain = GetComponent<UnitBrain> ();
     sandbagDelay = (Random.value*(5f-2.5f))+2.5f ;
 }
예제 #24
0
 // Use this for initialization
 void Start()
 {
     //Debug.Log ("Start");
     unitBrain = GetComponent<UnitBrain> ();
 }
예제 #25
0
 void Awake()
 {
     nextSecondaryFire = secondaryFireRate + Time.time;
     status            = GetComponent <Status>();
     unitBrain         = GetComponent <UnitBrain>();
 }