Beispiel #1
0
    public void Init(UnitFactory.UnitStatistic newStats)
    {
        Disciplined   = newStats.disciplined;
        HoldTheLine   = newStats.holdTheLine;
        WorksTogether = newStats.worksTogether;
        ReachOut      = newStats.reachOut;

        unitControl = GetComponent <UnitControl>();
        navAgent    = GetComponent <NavMeshAgent>();

        visualRange = unitControl.visualRange * unitControl.visualRange;
        meleeRange  = unitControl.meleeRange * unitControl.meleeRange;
        if (ReachOut)
        {
            meleeRange *= 3;
        }
        missileRange.x = unitControl.missileRange.x * unitControl.missileRange.x;
        missileRange.y = unitControl.missileRange.y * unitControl.missileRange.y;
        chargeRange    = unitControl.chargeRange * unitControl.chargeRange;

        useAltAttackPose = Random.value < 0.5f;

        AddState(gameObject.AddComponent <UnitStateIdle>());
        AddState(gameObject.AddComponent <UnitStateMoving>());
        AddState(gameObject.AddComponent <UnitStateAttacking>());
        AddState(gameObject.AddComponent <UnitStateChasing>());
        AddState(gameObject.AddComponent <UnitStateRetreating>());

        State = "Idle";
    }
Beispiel #2
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);
    }