Beispiel #1
0
        /// <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.");
            }
        }
Beispiel #2
0
    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);
    }