Beispiel #1
0
    private void GetGrabbed(GameObject grabbedBy)
    {
        if (state != State.Null)
        {
            return;
        }

        if (!_characterState.CanBeGrabbed())
        {
            return;
        }

        if (gameObject.tag == "Enemy")
        {
            EventHandler.SendEvent(EventHandler.Events.ENEMY_GRAB);
        }
        state = State.Grabbed;
        _animator.TransitionPlay("Grabbed");
        _characterState.SetState(CharacterState.State.Grabbed);
        _movement.Move(Vector2.zero);
        _movement.SetDirection(grabbedBy.GetComponent <Movement>().direction, true);
        if (_movementAI)
        {
            _movementAI.enabled = false;
        }

        // AI stuff: Mark this enemy's position around the player as available
        if (_blackboard)
        {
            float attackPosition = _blackboard.GetFloatVar("attackPosition");
            if (attackPosition != -1)
            {
                string positionVar = "pos" + attackPosition;
                if (GlobalBlackboard.Instance.GetBoolVar(positionVar) != null)
                {
                    GlobalBlackboard.Instance.GetBoolVar(positionVar).Value = false;
                }
                _blackboard.GetFloatVar("attackPosition").Value = -1;
            }
        }

        grabbedBy.GetComponent <Grabber>().Hold(gameObject);

        _previousParent = transform.parent;
        transform.SetParent(grabbedBy.transform, true);
        _grabbedBy = grabbedBy;

        gameObject.layer = grabbedBy.layer;
        _collision.AddCollisionLayer("Enemy");

        if (GetComponentInChildren <AttackArea>())
        {
            GetComponentInChildren <AttackArea>().gameObject.SetActive(false);
        }
    }