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"; }
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); }