void ContinuousMove(InGameDirection direction) { if (direction < 0) { direction = (InGameDirection )(-1 * (int)direction); } Vector3 vMovement = IsometricMovement.HorizontalVector(direction); target.DirectTranslate(vMovement * Time.deltaTime); }
protected void ExecuteDir(InGameDirection dir) { bool bMove = dir > 0; if (!bMove) { dir = (InGameDirection)(-1 * (int)dir); } if (dir.Equals(InGameDirection.Dash) || (!bOnMoving && (isOnGround || bJumpWithMove))) { if (!bJumpWithMove && dir.Equals(InGameDirection.Jump_Move)) { jumpStart(); dir = LastDirection; } if (bDashing = dir.Equals(InGameDirection.Dash)) { dir = LastDirection; } else { LastDirection = dir; } // float fAngle = IsometricMovement.AngleOfForward(dir); if (bRotateToDirection) { RotateTo(dir); // cTransform.localEulerAngles = new Vector3(0, fAngle, 0); } if (bMove) { Vector3 v3TmpCoordinates = IsometricMovement.HorizontalVector(dir); if (!bDashing && bSnapToGroundGrid) { Vector3 vUnSnapedPosition = groundGridUnSnapedPosition(cTransform.position); if (vUnSnapedPosition.magnitude > 0.2f && Vector3.Dot(v3TmpCoordinates.normalized, vUnSnapedPosition.normalized) > 0.866f) //0.866 means angle < 30 { v3TmpCoordinates = -vUnSnapedPosition; } } Vector3 v3TmpPosition = cTransform.position + groundGridPos(v3TmpCoordinates, bSnapToGroundGrid); if (!bDashing && bSnapToGroundGrid) { v3TmpPosition += groundGridUnSnapedPosition(v3TmpPosition); } if (bDashing) { v3TmpPosition += vHorizontalMovement; } bMove = Grounding(v3TmpPosition, fMaxDropHeight); if (bMove) { if (!bDashing) { vLastCoordinates = vDestinationCoordinates; } vDestinationCoordinates += v3TmpCoordinates; SetHorizontalMovement(v3TmpPosition - cTransform.position); } } } else { EnQueueDirection(dir); } }
protected void ExecuteDir(InGameDirection dir) { isMoving = true; bool bMove = dir > 0 && alive; if (!bMove) { dir = (InGameDirection)(-1 * (int)dir); } if (dir.Equals(InGameDirection.Dash) || (!bOnMoving && (isOnGround || bJumpWithMove))) { if (!bJumpWithMove && dir.Equals(InGameDirection.Jump_Move)) { jumpStart(); dir = LastDirection; } if (bDashing = dir.Equals(InGameDirection.Dash)) { dir = LastDirection; } else { LastDirection = dir; } // float fAngle = IsometricMovement.AngleOfForward(dir); if (bRotateToDirection) { RotateTo(dir); // cTransform.localEulerAngles = new Vector3(0, fAngle, 0); } if (bMove) { Vector3 v3TmpCoordinates = IsometricMovement.HorizontalVector(dir); if (!bDashing && bSnapToGroundGrid) { Vector3 vUnSnapedPosition = groundGridUnSnapedPosition(cTransform.position); if (vUnSnapedPosition.magnitude > 0.2f && Vector3.Dot(v3TmpCoordinates.normalized, vUnSnapedPosition.normalized) > 0.866f) //0.866 means angle < 30 { v3TmpCoordinates = -vUnSnapedPosition; } } Vector3 v3TmpPosition = cTransform.position + groundGridPos(v3TmpCoordinates, bSnapToGroundGrid); if (!bDashing && bSnapToGroundGrid) { v3TmpPosition += groundGridUnSnapedPosition(v3TmpPosition); } if (bDashing) { v3TmpPosition += vHorizontalMovement; } bMove = Grounding(v3TmpPosition, fMaxDropHeight); if (!bDashing) { vLastCoordinates = vDestinationCoordinates; } vDestinationCoordinates += v3TmpCoordinates; SetHorizontalMovement(v3TmpPosition - cTransform.position); if (!bMove) { if (!GameObject.FindWithTag("Player").GetComponent <KeyInputAssist>().illegalJump) { alive = false; GameObject.FindWithTag("Player").GetComponent <KeyInputAssist>().illegalJump = false; } //Get grid location where Player was standing before they fell to their doom. deathType = deathByFalling; // var deathlocation = GameObject.FindWithTag("Player").GetComponent<KeyInputAssist>().GetCurrAlpacaLocationProperty(); } } } else { EnQueueDirection(dir); } }