Unity, how to move a cube so that it always goes 1 in 1

1

I am creating a learning game in Unity (C#) , I made this code to move my player one by one

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// Esta classe é responsável por movimentar e interagir o objeto Player
public class Player : MonoBehaviour {
    // Variáveis compostas
    private Vector3 speed; // speed é um vetor 3, ele representa cada direção que o Player anda (x e z)

    // Variáveis primitivas
    private float timer; // timer é um cronômetro, ele representa o tempo de deslocação do player

    // Métodos de MonoBehaviour
    public void start(){ // Quando o objeto é criado
        speed = new Vector3(0,0,0); // speed é iniciado com zero (Player parado)
        timer = 0; // timer inicia zerado (Player pode se mover)
    }

    public void update(){ // Enquanto o objeto existir
        if(timer > 0){ // se timer for maior que zero (cronômetro iniciado)
            timer -= Time.deltaTime; // timer dimui conforme delta time (1/fps)
            transform.Translate(speed * Time.deltaTime); // Player se move com base em speed veses delta time
        } else // senão
            move(); // Pode-se mover
    }

    // Métodos da classe
    public void move(){ // Move o player em x e z
        if(Input.GetKeyDown(KeyCode.A)){ // se existir entrada com tecla A
            speed.Set(-1,0,0); // modifica speed para -1 em x
            timer = 1; // inicia o timer
        } else if(Input.GetKeyDown(KeyCode.D)){ // se existir entrada com tecla D
            speed.Set(1,0,0); // modifica speed para 1 em x
            timer = 1; // inicia o timer
        }
    }
}

It does not go sideways when I press the keys ... What can be ???

    
asked by anonymous 25.04.2018 / 23:56

1 answer

1

The problem

The Start and Update functions are in lower case. According to the Unity documentation, Start and Update are capitalized.

C # naming conventions may be useful for you.

Suggestion

You can use GetAxisRaw in Unity instead of GetKeyDown in this situation. You set Input.GetAxis("Horizontal") to x and Input.GetAxis("Vertical") to z of speed within your Update() . The code will be more readable and compact.

    
29.04.2018 / 20:08