示例#1
0
    public override void End(ItemController user)
    {
        if (heldItem != null)
        {
            Destroy(heldItem.gameObject);
            heldItem = null;
        }

        if (user.MovementController != null)
        {
            user.MovementController.moveSpeed.Value = user.MovementController.oldMoveSpeed.Value;
        }

        GameObject spawnObject = Instantiate(itemToSpawnOnUse, user.SpawnTransform);

        spawnObject.transform.localScale = user.transform.localScale;
        //CheckForDamageComponent(spawnObject, user);

        if (angleSnap == 0)
        {
            RotateObject(spawnObject.transform, user.InputController.lookDirection);
        }
        else
        {
            RotateObject(spawnObject.transform, user.InputController.lookDirection, angleSnap);
        }

        spawnObject.transform.position = (Vector2)user.SpawnTransform.position + (Vector2)spawnObject.transform.right;


        /*
         * //  if object has a component that deals damage, make sure to set it so that it cant hurt itself.
         * DealDamage dd = spawnObject.GetComponentInChildren<DealDamage>();
         * if (dd != null)
         *  dd.ignoreObject = user.gameObject;
         */

        //  apply item delay so you cant spam items
        user.ApplyItemDelay(itemCooldownTime);

        // apply movement stun
        user.ApplyMoveStun(itemMoveStunTime);
    }
    public override void End(ItemController user)
    {
        if (user.MovementController != null)
        {
            user.MovementController.moveSpeed.Value = user.MovementController.oldMoveSpeed.Value;
        }

        GameObject prefabToSpawn = null;

        if (Time.time >= user.StartTime + chargeTime && useOtherPrefab)
        {
            prefabToSpawn = otherItemToSpawn;
        }
        else
        {
            prefabToSpawn = itemToSpawnOnUse;
        }

        GameObject spawnObject = Instantiate(prefabToSpawn, user.SpawnTransform);

        var projectile = spawnObject.GetComponent <Projectile>();

        if (projectile != null)
        {
            projectile.creator = heldItem.GetComponentInParent <Collider2D>();
            var userTargets = user.GetComponent <TargetTags>();
            var projTargets = projectile.GetComponent <TargetTags>();
            if (userTargets != null && projTargets != null)
            {
                projTargets.SetTargets(userTargets.GetTargets());
            }
        }

        var AttackItemListeners = spawnObject.GetComponent <HeldItem>();

        if (AttackItemListeners != null)
        {
            AttackItemListeners.Begin(user);
        }

        var HeldItemRef = user.GetComponent <HeldItemRef>();

        if (HeldItemRef != null)
        {
            HeldItemRef.value = AttackItemListeners;
        }

        spawnObject.transform.localScale = user.transform.localScale;

        if (angleSnap == 0)
        {
            RotateObject(spawnObject.transform, user.InputController.lookDirection);
        }
        else
        {
            RotateObject(spawnObject.transform, user.InputController.lookDirection, angleSnap);
        }

        spawnObject.transform.position = (Vector2)user.SpawnTransform.position + (Vector2)spawnObject.transform.right;

        //  apply item delay so you cant spam items
        user.ApplyItemDelay(itemCooldownTime);

        // apply movement stun
        user.ApplyMoveStun(itemMoveStunTime);

        if (heldItem != null)
        {
            var HeldItemListeners = heldItem.GetComponent <HeldItem>();
            if (HeldItemListeners != null)
            {
                HeldItemListeners.Clean(user);
            }

            Destroy(heldItem.gameObject);
            heldItem = null;
        }
    }