public void Release()
    {
        //set status
        __Status = STATUS.idle;

        //null check
        if (__Grabbed == null)
        {
            return;
        }

        //Grabbed Object's parent check
        if (__Grabbed.IsParent(transform))
        {
            //release object
            __Grabbed.Release(__AvgVelocity);

            //get return object & set return target
            ReturnObject tmprobj = __Grabbed.gameObject.GetComponent <ReturnObject>();
            tmprobj.setTargetToReturn(transform);

            __Grabbed = null;
        }
        else
        {
            __Grabbed = null;
        }
    }
 /// <summary>
 /// 물건을 놓게할 때 쓰이는 함수입니다. 무려 널체크까지 해준다구~
 /// </summary>
 public void PutCatchedObject()
 {
     if (!ReferenceEquals(catchedObject, null))
     {
         catchedObject.GoPutThis();
         catchedObject = null;
     }
 }
    public void Grab()
    {
        // if this status is already "grab", continue
        if (__Status == STATUS.grab)
        {
            return;
        }
        __Status = STATUS.grab;

        // if already something is grabbed, continue
        if (__Grabbed != null)
        {
            return;
        }

        // if there is no candidate, dosen't work anything
        if (__Candidates.Count == 0)
        {
            return;
        }

        // find closest object
        CatchableObject tmpcobj = null;
        float           tmpdist = Mathf.Infinity;

        __Candidates.ForEach((CatchableObject co) =>
        {
            if (co == null || co.IsGrabbed())
            {
                return;
            }
            if (tmpcobj == null)
            {
                tmpcobj = co;
            }
            else
            {
                Debug.Log(co);
                float dist = (transform.position - co.transform.position).sqrMagnitude;
                if (tmpdist > dist)
                {
                    tmpdist = dist;
                    tmpcobj = co;
                }
            }
        });

        if (tmpcobj != null)
        {
            //do grab motion
            tmpcobj.Grab(gameObject);

            //set grabbed object
            __Grabbed = tmpcobj;
        }
    }
    private void OnTriggerExit(Collider other)
    {
        //is it possible to be candidate?
        CatchableObject candidate = other.gameObject.GetComponent <CatchableObject>();

        if (candidate == null)
        {
            return;
        }

        //remove from candidates list
        __Candidates.Remove(candidate);
    }
    private void OnTriggerEnter(Collider other)
    {
        //is it possible to be candidate?
        CatchableObject candidate = other.gameObject.GetComponent <CatchableObject>();

        if (__Candidates == null)
        {
            return;
        }

        //added to candidates list
        __Candidates.Add(candidate);
    }
    public void Init()
    {
        if (growTime <= 0f)
        {
            growTime = 5f;
        }

        if (currentGrowTime >= 0f)
        {
            currentGrowTime = 0f;
        }

        GrowCoroutine   = ProcessGrow();
        catchableObject = GetComponent <CatchableObject>();
        //  spriteRenderer = GetComponent<SpriteRenderer>();
    }
Exemple #7
0
    /// <summary>
    /// 플레이어 들어왔다면 실행하는 함수.
    /// </summary>
    public void EnterPlayer()
    {
        var playerCatchedObject = PlayerController.Instance.GetCatchedObject();

        if (ReferenceEquals(playerCatchedObject, null) == false)//뭘 들고있다면
        {
            currentCatchedObject = playerCatchedObject;
            isCatched            = true;
            PlayerController.Instance.PutCatchedObject();
            Debug.Log(currentCatchedObject.name);

            currentCatchedObject.transform.position = catchedPosition.position;
            currentCatchedObject.canCatched         = false;
        }
        else //아니라면
        {
            //PlayerController.Instance.GoDie();
        }
    }
Exemple #8
0
    public void OnTriggerEnter(Collider other)
    {
        PlayerFireController playerFire = other.GetComponent <PlayerFireController>();

        if (playerFire)
        {
            if (playerFire.m_suckHoldObject != null)
            {
                CatchableObject catchObj = playerFire.m_suckHoldObject.GetComponent <CatchableObject>();
                if (catchObj)
                {
                    BaseMonsterBrain monster = catchObj.GetComponent <BaseMonsterBrain>();
                    if (monster)
                    {
                        monster.OnAssimilation();
                    }
                    OnCatch();
                }
            }
        }

        CatchableObject catchable = other.GetComponent <CatchableObject>();

        if (catchable)
        {
            BaseMonsterBrain monster = catchable.GetComponent <BaseMonsterBrain>();
            if (monster && !monster.IsKnockedOut())
            {
                return;
            }
            else if (monster)
            {
                monster.OnAssimilation();
            }
            else
            {
                Destroy(other.gameObject);
            }

            OnCatch();
        }
    }
    public void Init()
    {
        playerStateMachine = new PlayerStateMachine(this);
        if (playerSkillManager == null)
        {
            playerSkillManager = GetComponent <PlayerSkillManager>();
        }
        playerRigidbody       = GetComponent <Rigidbody2D>();
        playerCollider        = GetComponent <BoxCollider2D>();
        playerCapsuleCollider = GetComponent <CapsuleCollider2D>();
        animator = GetComponent <Animator>();
        puppet   = gameObject.transform;


        Init_LayerMask();

        Init_AnimatorParameter();

        isRight             = true;
        isWater             = false;
        isInputCatchKey     = false;
        isTalkReady         = false;
        isGliding           = false;
        existInteractObject = false;

        isInteractingSoulMemory = false;

        currentNPC    = null;
        catchedObject = null;
        //pushedObject = null;
        touchedObject     = null;
        currentSoulMemory = null;

        originalMoveSpeed = movementSpeed;
        //animator.SetFloat("WindBlend", 0);
        currentGlideAngle = glideAngle + 90f;

        footPosition = lightningPosition;
        myRigidbody  = playerRigidbody;

        Init_ContactFilter();
    }
 public void SetTouchedObject(CatchableObject _go)
 {
     touchedObject = _go;
 }
 public void SetCatchedObject(CatchableObject _co)
 {
     catchedObject = _co;
 }