- 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