Example #1
0
 void Update()
 {
     if (swordState == SwordState.MOVING)
     {
         swordGO.transform.localPosition += direction * swordSpeed * Time.deltaTime;
         if (Mathf.Abs(direction.z) > 0.2f)
         {
             swordGO.transform.localRotation = Quaternion.Euler(new Vector3(0f, -90f,
                                                                            swordGO.transform.localRotation.eulerAngles.z + (direction.z * -400f * Time.deltaTime)));
         }
         else
         {
             swordGO.transform.localRotation = Quaternion.Euler(swordGO.transform.localRotation.eulerAngles +
                                                                (Vector3.forward * direction.x * -400f * Time.deltaTime));
         }
     }
     else if (swordState == SwordState.FALLING)
     {
         swordGO.transform.localPosition += Vector3.down * Time.deltaTime * swordSpeed;
     }
     else if (swordState == SwordState.IDLE)
     {
         if (!PlayerMovimentManager.HasWallInPosition(swordGO.transform.localPosition + Vector3.up * -0.2f, 0.1f) &&
             !PlayerMovimentManager.HasStairInPosition(swordGO.transform.localPosition + Vector3.up * -0.2f, 0.1f))
         {
             swordState = SwordState.FALLING;
         }
     }
     if (Vector3.Distance(swordGO.transform.localPosition, swordsContainer.transform.localPosition) > 100f)
     {
         OnSwordLeaveWorld(this);
     }
 }
Example #2
0
    public void LeftButtonPressed()
    {
        if (actionStatus != ActionStatus.NOTHING && actionBuffer)
        {
            return;
        }
        if (status == PlayerStatus.TAKING_ELEVATOR)
        {
            return;
        }
        Vector3 __targetPos = playerGO.transform.localPosition + PlayerDirNormalized();

        Collider[] __collisions;
        __collisions = Physics.OverlapSphere(playerGO.transform.localPosition + (PlayerDirNormalized() * 0.5f)
                                             + (Vector3.up * 0.5f), 0.1f);
        if (__collisions.Length > 0)
        {
            if (PlayerMovimentManager.HasColliderWithTag(__collisions, "Ladder"))
            {
                actionBuffer = true;
                actionStatus = ActionStatus.CLIMBING_UP_LADDER;
                return;
            }
        }
        if (itemStatus != ItemStatus.NOTHING &&
            !PlayerMovimentManager.HasWallInPosition(__targetPos + (Vector3.up * 0.5f), 0.3f) &&
            !PlayerMovimentManager.HasStairInPosition(__targetPos + (Vector3.up * 0.5f), 0.3f))
        {
            if (itemStatus == ItemStatus.SWORD)
            {
                actionStatus = ActionStatus.THROWING_SWORD;
            }
            else if (itemStatus == ItemStatus.DYNAMITE)
            {
                actionStatus = ActionStatus.PLACING_DYNAMITE;
            }

            actionBuffer = true;
            return;
        }
        else if (itemStatus == ItemStatus.NOTHING)
        {
            if (PlayerMovimentManager.HasWallInPosition(playerGO.transform.localPosition + (Vector3.up * 1.5f), 0.2f))
            {
                Debug.Log("Blocked Up");
            }
            else if (PlayerMovimentManager.HasStairInPosition(__targetPos + (Vector3.up * 0.5f), 0.3f))
            {
                Debug.Log("Blocked Stair");
            }
            else if (PlayerMovimentManager.HasStairInPosition(playerGO.transform.localPosition, 0.3f))
            {
                Debug.Log("Blocked Stair Beneath");
            }
            else
            {
                jumpBuffer = true;
            }
        }
    }
Example #3
0
 public void SetAction()
 {
     if (!actionBuffer)
     {
         if (actionStatus == ActionStatus.CLIMBING_UP_LADDER)
         {
             status     = PlayerStatus.WALKING;
             idleBuffer = false;
         }
         else if (actionStatus == ActionStatus.THROWING_SWORD)
         {
             status     = PlayerStatus.IDLE;
             itemStatus = ItemStatus.NOTHING;
         }
         else if (actionStatus == ActionStatus.PLACING_DYNAMITE)
         {
             status = PlayerStatus.IDLE;
             if (playerHand.transform.childCount == 0)
             {
                 itemStatus = ItemStatus.NOTHING;
             }
         }
         actionStatus = ActionStatus.NOTHING;
         return;
     }
     actionBuffer = false;
     if (actionStatus == ActionStatus.CLIMBING_UP_LADDER)
     {
         isMoving       = true;
         moveTweenCount = 0f;
         movManager.CalcPlayerClimbUpLadder(PlayerDirNormalized());
     }
     else if (actionStatus == ActionStatus.THROWING_SWORD)
     {
         playerHand.transform.GetChild(0).GetComponent <Sword> ().ThrowSword(playerDirection);
         itemStatus = ItemStatus.NOTHING;
     }
     else if (actionStatus == ActionStatus.PLACING_DYNAMITE)
     {
         if (PlayerMovimentManager.HasStairInPosition(playerGO.transform.localPosition, 0.1f))
         {
             return;
         }
         playerHand.transform.GetChild(0).GetComponent <Dynamite> ().
         PlaceDynamiteOnGround(playerGO.transform.localPosition + PlayerDirNormalized());
         if (playerHand.transform.childCount == 0)
         {
             itemStatus = ItemStatus.NOTHING;
         }
     }
 }
Example #4
0
    public void DropSword(GameObject p_hit)
    {
        swordState                      = SwordState.IDLE;
        swordCollider.enabled           = true;
        swordGO.transform.localRotation = Quaternion.identity;
        Vector3 __tempPos = swordGO.transform.localPosition - (direction * swordSpeed * Time.deltaTime);

        swordGO.transform.localPosition = new Vector3(Mathf.Round(__tempPos.x),
                                                      Mathf.Floor(__tempPos.y), Mathf.Round(__tempPos.z));

        if (p_hit.tag == "Stair")
        {
            swordGO.transform.localPosition += Vector3.up * 0.6f;
        }
        else if (!PlayerMovimentManager.HasWallInPosition(swordGO.transform.localPosition
                                                          + Vector3.up * -0.2f, 0.1f))
        {
            swordState = SwordState.FALLING;
        }
    }
Example #5
0
 private void UpdatePlayerPosition()
 {
     moveTweenCount += Time.deltaTime * GameSceneManager.gameSpeed;
     if (status == PlayerStatus.JUMPING)
     {
         movManager.UpdateJumpPosition(moveTweenCount);
     }
     else if (status == PlayerStatus.WALKING)
     {
         movManager.UpdatePlayerPosition(moveTweenCount);
     }
     else if (status == PlayerStatus.ACTION)
     {
         if (actionStatus == ActionStatus.CLIMBING_UP_LADDER)
         {
             movManager.UpdatePlayerPosition(moveTweenCount);
         }
     }
     if (moveTweenCount >= 1f)
     {
         isMoving = false;
         if (status == PlayerStatus.JUMPING)
         {
             CheckElevatorButtons();
             CheckMovingPlatform();
             if (movManager.currentJumpType != PlayerMovimentManager.JumpType.LAND_ON_STAIR)
             {
                 if (!PlayerMovimentManager.HasWallInPosition(playerGO.transform.localPosition, 0.05f) &&
                     status != PlayerStatus.TAKING_PLATFORM)
                 {
                     status = PlayerStatus.FALLING;
                 }
             }
         }
     }
 }
Example #6
0
    public void PlayTurn()
    {
        if (status == PlayerStatus.TAKING_ELEVATOR)
        {
            return;
        }
        if (status == PlayerStatus.FALLING)
        {
            return;
        }
        if (actionBuffer || status == PlayerStatus.ACTION)
        {
            status = PlayerStatus.ACTION;
            SetAction();
            return;
        }
        if (jumpBuffer)
        {
            status     = PlayerStatus.JUMPING;
            idleBuffer = false;
            jumpBuffer = false;
            SetPlayerJump();
            return;
        }
        if (status == PlayerStatus.TAKING_PLATFORM)
        {
            return;
        }
        if (idleBuffer)
        {
            status     = PlayerStatus.IDLE_BUFFER;
            idleBuffer = false;
            if (!PlayerMovimentManager.HasWallInPosition(playerGO.transform.localPosition, 0.05f) &&
                !PlayerMovimentManager.HasStairInPosition(playerGO.transform.localPosition, 0.05f))
            {
                status = PlayerStatus.FALLING;
            }

            return;
        }

        if (status == PlayerStatus.WALKING)
        {
            SetPlayerDestination();
        }
        else if (status == PlayerStatus.JUMPING)
        {
            status     = PlayerStatus.IDLE;
            idleBuffer = false;
            jumpBuffer = false;
        }
        else if (status == PlayerStatus.IDLE)
        {
            status = PlayerStatus.WALKING;
            SetPlayerDestination();
        }
        else if (status == PlayerStatus.IDLE_BUFFER)
        {
            status = PlayerStatus.IDLE;
        }
    }