Problème save avec player pref.

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
FcStudio
Messages : 2
Inscription : 03 Avr 2020 22:48

Problème save avec player pref.

Message par FcStudio » 03 Avr 2020 23:16

Bonjour,
Je m'appelle Florian et je suis débutant dans unity.
Je développe en se moment un jeu de plateforme mais j'ai un soucis avec
mon script de sauvegarde il me téléporte dans les airs quand je ne sauvegarde pas sur une surface plane.
J'en suis donc venu à la conclusion qu'il me faudrait un script qui sauvegarde lorsque l'on rentre dans un trigger mais
étant débutant je ne sais pas comment faire quelqu'un serai-t-il m'aider?
(voici le script que j'utilise) merci d'avance.

Code : Tout sélectionner

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

public class SaveScript : MonoBehaviour {

    public GameObject player;
    public GameObject panelMenu;
    bool affiche = false;

    void Start()
    {
       panelMenu.SetActive(false);

       if(PlayerPrefs.GetInt("load")==1)
       {
            //si load
            float x = PlayerPrefs.GetFloat("x");
            float y = PlayerPrefs.GetFloat("y");
            float z = PlayerPrefs.GetFloat("z");
            player.transform.position = new Vector3(x, y, z);
       }

    }


    void Update()
    {

       if (Input.GetKeyDown(KeyCode.Escape))
       {
           affiche = !affiche;

           panelMenu.SetActive(affiche);

           if (affiche)
           {
               Time.timeScale = 0;
           }
           else
           {
               Time.timeScale = 1;
           }

       }  
    }

    public void Save()
    {
        PlayerPrefs.SetString("scene", SceneManager.GetActiveScene().name);
        PlayerPrefs.SetFloat("x", player.transform.position.x);
        PlayerPrefs.SetFloat("y", player.transform.position.y);
        PlayerPrefs.SetFloat("z", player.transform.position.z);
    }

}

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème save avec player pref.

Message par Max » 04 Avr 2020 10:15

Bonjour,
FcStudio a écrit :
03 Avr 2020 23:16
J'en suis donc venu à la conclusion qu'il me faudrait un script qui sauvegarde lorsque l'on rentre dans un trigger
Tu dois positionner le GameObject (souvent un cube) avec son BoxCollider en mode trigger à l'endroit souhaité au niveau de ta scène.
Sur ce GameObject tu affecteras un script, contenant la méthode OnTriggerEnter(Collider), et qui se chargera lors de la détection d'entrée de ton Player, d'appeler la fonction de sauvegarde.
A noter que pour que cela fonctionne, ton Player doit posséder un RigidBody.
Les tuto sur le sujet ne manquent pas, par exemple ici une petite vidéo de 4 minutes: https://www.youtube.com/watch?v=qD7fDop-Ptw
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « (C#) CSharp »