- Home /
How to make a top down character snap to different directions
I'm coding an Isometric game with a 3d character which looks pixelated. Therefore it looks unnatural for the character to slowly turn to its desired position and would look better if it just snapped. What I mean is if it is pointing right, instead of turning forward when the W key is pressed, it would just snap there or at least turn in that direction faster and start walking. Any clue how I would go about doing this? This is the code I currently use to move my character:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 public class PlayerMovement: MonoBehaviour {
 [SerializeField]
 float moveSpeed = 4f; 
 public Animator anim;
 Vector3 forward, right;
 void Start()
 {
     forward = Camera.main.transform.forward; 
     forward.y = 0; 
     forward = Vector3.Normalize(forward); 
     right = Quaternion.Euler(new Vector3(0, 90, 0)) * forward; 
 }
 void Update()
 {
     if(Mathf.Abs(Input.GetAxis("Horizontal"))>0f)
     {
         anim.SetBool("Running", true);
     }
     if(Mathf.Abs(Input.GetAxis("Vertical"))>0f)
     {
         anim.SetBool("Running", true);
     }
 
     if(!Input.GetKey(KeyCode.A)&&!Input.GetKey(KeyCode.W)&&!Input.GetKey(KeyCode.S)&&!Input.GetKey(KeyCode.D))
     {
         anim.SetBool("Running", false);
     }
     if(Input.anyKey)
     {
         Move();
     }
 }
 void Move()
 {
     Vector3 direction = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
     Vector3 rightMovement = right * moveSpeed * Time.deltaTime * Input.GetAxis("Horizontal"); 
     Vector3 upMovement = forward * moveSpeed * Time.deltaTime * Input.GetAxis("Vertical"); 
     
     Vector3 heading = Vector3.Normalize(rightMovement + upMovement);
     
     transform.forward = heading;
     transform.position += rightMovement;
     transform.position += upMovement; 
     
 }
     
 }
if you want the character to snap to 90 degrees when you press left then why not something like:
if(Input.GetKeyDown(keycode.Left))
transform.rotation=Quaterion.Eular(0,0,90);
Just implicitly set it to what you want.
Your answer
 
 
             Follow this Question
Related Questions
3D Movement but the player can only move backwards (Beginner) 1 Answer
How would I restrict Movement in Air? 1 Answer
Smooth Movement with set distance 1 Answer
why does update only run once? 0 Answers
How can make my mouse look working? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                