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); } }
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; } } }
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; } } }
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; } }
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; } } } } }
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; } }