/// <summary> /// Initializes the object. /// </summary> public virtual void Init() { // Initializes the weapon Weapon = GetComponentInChildren <Weapon>(); if (Weapon != null) { Weapon.Init(this); } // Initializes moving mover = gameObject.GetOrAddComponent <UnitMover>(); mover.Init(moveSpeed, turnSpeed); // Initializes health Health = new Health(this, startingHealth); // Registers to listen to the UnitDied event Health.UnitDied += OnUnitDied; // Sets spawn position and rotation _defaultPosition = transform.position; _startRotation = transform.rotation; if (unitBody == null) { Debug.LogError("Unit model is not set."); } }
public void Init() { gameManager = GameManager.Instance; cameraControl = gameManager.CameraControl; gameObject.tag = "Unit"; gameObject.layer = LayerMask.NameToLayer("Units"); CapsuleCollider collision = gameObject.AddComponent <CapsuleCollider>(); collision.radius = 0.1f; collision.height = 1.8f; collision.center = new Vector3(0.0f, 1.0f, 0.0f); animator = GetComponent <Animator>(); unitMover = gameObject.AddComponent <UnitMover>(); unitMover.Init(); unitAttack = gameObject.AddComponent <UnitAttack>(); unitAttack.Init(); TeamName = teamName; hitPoint = maxHits; SkeletonConfig skeletonConfig = gameObject.AddComponent <SkeletonConfigCombot>(); if (skeletonConfig) { skeletonControl = skeletonConfig.Init(); } if (startAsPlayer) { gameManager.ActiveUnit = this; } if (addAI) { aiControl = gameObject.AddComponent <AIController>(); } InventoryObject.PlayerEntry playerData = gameManager.inventory.GetPlayerEntry(unitName); if (playerData == null) { Debug.Log("No PlayerData Found, Adding It"); playerData = new InventoryObject.PlayerEntry(); playerData.name = unitName; playerData.primaryWeapon = "AssaultRifle"; playerData.primaryMagazines = 2; gameManager.inventory.AddPlayerEntry(playerData); } AddWeapon(playerData.primaryWeapon, playerData.primaryMagazines); AddWeapon(playerData.secondaryWeapon, playerData.secondaryMagazines); }