Déplacement basé sur une grille avec Unity

YouTube player

Le mouvement basé sur une grille ou des tuiles signifie que la position du personnage est restreinte.

Il ne peut se tenir que sur une tuile – jamais entre deux tuiles.

Si je dois programmer le jeu « Lode Runner » le déplacement du héro dois se faire tuile par tuile, afin de tomber bien en face d’une échelle, ou encore d’une brique du sol.

Un autre exemple, PAC MAN le personnage doit impérativement se déplacer de tuile en tuile afin de se parcourir facilement le labyrinthe, ou encore être positionner devant les PAC Gomme !

Voici les sprites utilisés dans le tutoriel :

image

Le script de déplacement :

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

public class GridDeplacement : MonoBehaviour
{
    private Vector3 startPos, endPos;
    public bool isMoving = false;
    public float MoveTime = 0.2f;
    
    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");
        float y = Input.GetAxisRaw("Vertical");

        if (!isMoving) StartCoroutine(MovePlayer(new Vector3(x, y, 0f)));

    }

    IEnumerator MovePlayer(Vector3 dir)
    {
        isMoving = true;
        float nextMove = 0f;
        startPos = transform.position;
        endPos = startPos + dir;

        while(nextMove < MoveTime)
        {
            transform.position = Vector3.Lerp(startPos, endPos, nextMove / MoveTime);
            nextMove += Time.deltaTime;
            yield return null;
        }

        transform.position = endPos;

        isMoving = false;
    }
}

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.