// Basically tank controls public void MoveAndRotateCharacterWithKeys() { bool isRunning = false; float runSpeed = walkSpeed * runSpeedMultiplier; // Get move quantity based on delta time and speed float moveSpeed = baseMoveSpeed * (isRunning ? runSpeed : walkSpeed); moveSpeed = PauseManager.isPaused ? 0 : moveSpeed; // Get user input float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); // Use animation if input exists if (vertical != 0.0f || horizontal != 0.0f) { agent.isStopped = true; MarkerManager.DeleteMarker(); if (animator != null) { animator.SetBool("Walk", true); } } else { if (animator != null) { animator.SetBool("Walk", false); } } // Translate character Vector3 cameraDir = IsometricCamera.instance.cameraDirection; Vector3 verticalMove = IsometricCamera.Camera.transform.forward * Mathf.Abs(vertical) * -Mathf.Sign(cameraDir.z); Vector3 hortizonalMove = IsometricCamera.Camera.transform.right * Mathf.Abs(horizontal) * Mathf.Sign(cameraDir.x); verticalMove.y = 0; verticalMove.x = 0; hortizonalMove.y = 0; hortizonalMove.x = 0; Vector3 moveVector = verticalMove + hortizonalMove; transform.Translate(moveVector.normalized * moveSpeed * Time.deltaTime); // Rotate character Vector3 dir = IsometricCamera.Camera.transform.forward * vertical + IsometricCamera.Camera.transform.right * horizontal; dir.y = 0; transform.LookAt(dir + transform.position); // Use Left Shift to Toggle Running if (Input.GetKeyDown(KeyCode.LeftShift)) { isRunning = !isRunning; } }