Skip to content
Snippets Groups Projects
Commit 1def98e0 authored by Alexandre's avatar Alexandre
Browse files

LeaderBoard code + debug

parent 33e7f905
No related branches found
No related tags found
No related merge requests found
Showing
with 199 additions and 77 deletions
{"Items":[{"value":40.0},{"value":70.0},{"value":90.0},{"value":100.0},{"value":10.0},{"value":60.0},{"value":40.0}]}
\ No newline at end of file
{"Items":[{"value":40.0},{"value":70.0},{"value":90.0},{"value":100.0},{"value":10.0},{"value":60.0},{"value":40.0},{"value":0.0},{"value":0.0},{"value":0.0},{"value":0.0},{"value":20.0}]}
\ No newline at end of file
......@@ -7,6 +7,7 @@ public class GameTriggerUI : MonoBehaviour
private UI UIScript;
public string GameName;
private bool isEnter = false;
private void Start(){
UIScript = GameObject.Find("MainCamera").GetComponent<UI>();
......@@ -15,8 +16,10 @@ public class GameTriggerUI : MonoBehaviour
private void LateUpdate()
{
if (Input.GetKeyDown(KeyCode.F))
if (Input.GetKeyDown(KeyCode.F) && isEnter)
{
isEnter = false;
UIScript.CallFunction("showGameTextInfo", GameName);
OnInteract();
}
}
......@@ -24,7 +27,7 @@ public class GameTriggerUI : MonoBehaviour
{
if (obj.CompareTag("Player"))
{
UIScript.CallFunction("showGameTextInfo", GameName);
isEnter = true;
}
}
......@@ -44,6 +47,7 @@ public class GameTriggerUI : MonoBehaviour
{
if (obj.CompareTag("Player"))
{
isEnter = false;
UIScript.CallFunction("hideGameTextInfo", "");
}
}
......
......@@ -3,6 +3,22 @@ using System.Collections.Generic;
using UnityEngine;
using System;
/**
* Fichier : ScoreTemp.cs
*
* Auteur : Alexandre NOVAIS
* Date : Mars 2022
* Groupe : TP 4C
*
* Résumé du fichier :
*
* Modele de classe à redéfinir pour chaque jeux
*
* Fonctionne de pair avec son ScriptableObject. Il faut transferer les données
* du scriptableObject dans une instance de cette classe afin de sauvegarder les donnée
* au format JSON grace a l'attribut Serializable de cette classe.
*/
[Serializable]
public class ScoreTemp
{
......
......@@ -16,7 +16,8 @@ using System.Linq;
*
* Implémente les fonctionnalités permettant d'ouvrir, de lire, de créer et d'écrire
* dans un document JSON.
* La classe static
* La classe static quant à elle permet de convertir et d'encapsuler les données
* de manière transparente pour le programmeur.
*/
public static class FileHandler
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// TEMPLATE
public class AfficherScore : MonoBehaviour
{
List<ScoreTemp> dataTab = new List<ScoreTemp>();
private bool isTrue = false;
private void Update()
{
if (Input.GetKeyDown(KeyCode.F) && isTrue)
{
dataTab = FileHandler.LireJSON<ScoreTemp>("tempScene.json"); // Lire les données du JSON associé à filename
foreach(ScoreTemp score in dataTab)
{
Debug.Log(score.value);
}
}
}
public void OnTriggerEnter(Collider obj)
{
if (obj.CompareTag("Player"))
{
isTrue = true;
}
}
public void OnTriggerExit(Collider obj)
{
if (obj.CompareTag("Player"))
{
isTrue = false;
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AllScores : MonoBehaviour
{
// [SerializeField]
// private ScoreSO scoreSO;
// [SerializeField]
// private int[] tmpScore;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SOScoreManager : MonoBehaviour
{
//Reference mémoire vers le ScriptableObject
[SerializeField]
public ScriptSO scriptSO;
}
......@@ -2,8 +2,24 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu] // Crée un objet ScriptSO dans le menu
// Structure de donnée persistante
/**
* Fichier : ScriptSO.cs
*
* Auteur : Alexandre NOVAIS
* Date : Mars 2022
* Groupe : TP 4C
*
* Résumé du fichier :
*
* Modele de ScriptableObject à redéfinir pour chaque jeux
*
* Cette classe permet de définir un Scriptable object qui contiendra des donnée
* persistente tant qu'une référence éxiste.
* Ce modèle prends une valeur de score.
* - On crée un objet depuis le menu pour le glisser dans les SerializeField
*/
[CreateAssetMenu]
public class ScriptSO : ScriptableObject
{
[SerializeField]
......
......@@ -2,8 +2,21 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// Permet de configurer l'inverse kinematics pour suivre du regards les objets "Actor"
// Inspiré de la documentation sur le sujet
/**
* Fichier : IKScript.cs
*
* Auteur : Alexandre Novais
* Date : Mars 2022
* Groupe : TP 4C
*
* Résumé du fichier :
*
* Permet de configurer l'inverse kinematics pour suivre du regards les objets "Actor"
* Inspiré de la documentation sur le sujet
* Ce script va dans le personnage et détécte automatiquement les objet possédant un tag "acteur" à une portée donnée.
*/
public class IKScript : MonoBehaviour
{
......@@ -11,10 +24,10 @@ public class IKScript : MonoBehaviour
public bool ikActive = false;
public Transform actor; // Modifier en Array de 4
// Portée à laquelle on commence à fixer l'objet
// Port�e � laquelle on commence � fixer l'objet
public float portee;
// permet de redefinir la portée de rotation de la tête quand un objet passe derrière le personnage
// permet de redefinir la port�e de rotation de la t�te quand un objet passe derri�re le personnage
public float lookWeight;
GameObject pivot;
......@@ -22,28 +35,28 @@ public class IKScript : MonoBehaviour
{
animator = GetComponent<Animator>();
pivot = new GameObject("Pivot"); // On crée un objet pivot dynamiquement
pivot.transform.parent = transform.gameObject.transform; // on le crée en tant qu'enfant du Player
pivot.transform.localPosition = new Vector3(0,1.43f,0); // On le positionne au niveau de la tête du personnage
pivot = new GameObject("Pivot"); // On cr�e un objet pivot dynamiquement
pivot.transform.parent = transform.gameObject.transform; // on le cr�e en tant qu'enfant du Player
pivot.transform.localPosition = new Vector3(0,1.43f,0); // On le positionne au niveau de la t�te du personnage
}
private void Update()
{
// Condition pour fixé la distance à laquelle on commence a fixer un actor
// Condition pour fix� la distance � laquelle on commence a fixer un actor
float distanceRelative = Vector3.Distance(pivot.transform.position, actor.position);
// On récupère la valeur de la position de l'objet par rapport au pivot
// On r�cup�re la valeur de la position de l'objet par rapport au pivot
pivot.transform.LookAt(actor);
float pivotY = pivot.transform.localRotation.y;
// si la position est comprise en 0.65 et -0.65 alors l'objet est devant le pivot et la distance est inférieur à 14f
// si la position est comprise en 0.65 et -0.65 alors l'objet est devant le pivot et la distance est inf�rieur � 14f
if (pivotY < 0.65f && pivotY > -0.65f && distanceRelative < portee)
{
// On suit du regards
lookWeight = Mathf.Lerp(lookWeight,1, Time.deltaTime * 2.5f); // Lerp associé à deltatime permet de changer progressivement la valeur
// Grace à quoi on peut ciblé ou relaché le regards progréssivement
lookWeight = Mathf.Lerp(lookWeight,1, Time.deltaTime * 2.5f); // Lerp associ� � deltatime permet de changer progressivement la valeur
// Grace � quoi on peut cibl� ou relach� le regards progr�ssivement
}
else // l'objet est passé dérrière le pivot
else // l'objet est pass� d�rri�re le pivot
{
// On stop le suivis
lookWeight = Mathf.Lerp(lookWeight, 0, Time.deltaTime * 2.5f);
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouvementPlayer : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
......@@ -10,11 +10,23 @@ public class DetectTerrainSound : MonoBehaviour
public float[] textureValues;
GameObject player;
/**
* Fichier : DetectTerrainSound.cs
*
* Auteur : Alexandre Novais
* Date : Mars 2022
* Groupe : TP 4C
*
* Résumé du fichier :
*
* Cette classe va récupèrer les texture sur lesquels marche le joueur
* En utilisant l'alphaMap du terrain ainsi que ses textures
*/
private void Start()
{
// Initialisation des objets
terrain = Terrain.activeTerrains; // On récupère nos 2 terrain (car on peux pas utiliser Find sur un terrain ni convertir un GameObject en Terrain)
terrain = Terrain.activeTerrains; // On r�cup�re nos 2 terrain (car on peux pas utiliser Find sur un terrain ni convertir un GameObject en Terrain)
island = terrain[1]; // on ne choisis que l'ile
player = gameObject;
playerTransform = gameObject.transform;
......@@ -27,32 +39,32 @@ public class DetectTerrainSound : MonoBehaviour
RecupererTexture();
}
// Convertir la position du joueur en coordonées sur la carte, on cherche à obtenir une valeur entre 0 et 1 (pourcentage)
// On va utiliser l'alphamap pour récupérer plus tards le mix de textures ainsi que leurs intensité
// Convertir la position du joueur en coordon�es sur la carte, on cherche � obtenir une valeur entre 0 et 1 (pourcentage)
 
public void ConvertirPosJoueur(Vector3 player)
{
Vector3 playerPos = player - island.transform.position; // On récupère la position du joueur par rapport au terrain
Vector3 playerPos = player - island.transform.position; // On r�cup�re la position du joueur par rapport au terrain
// en faisant abstraction des offset
Vector3 mapPosition = new Vector3
(playerPos.x / island.terrainData.size.x, 0, playerPos.z / island.terrainData.size.z); // % representant la position du joueur
float xCoord = mapPosition.x * island.terrainData.alphamapWidth; // On récupère le postion précise du joueur par rapport au terrain
float xCoord = mapPosition.x * island.terrainData.alphamapWidth; // On r�cup�re le postion pr�cise du joueur par rapport au terrain
float zCoord = mapPosition.z * island.terrainData.alphamapHeight;
posX = (int)xCoord; // Permet de determiner le pixel exact en X
posZ = (int)zCoord; // Permet de determiner le pixel exact en Z
}
// On récupère maintenant les textures de l'alphamap aux coordonnées récupérés précédemment
// On r�cup�re maintenant les textures de l'alphamap aux coordonn�es r�cup�r�s pr�c�demment
public void RecupererTexture()
{
float[,,] alphaMap = island.terrainData.GetAlphamaps(posX, posZ, 1, 1); // On récupère la position du joueur calculé au dessus,
// par rapport à un echantillon de la map de 1 pixel
float[,,] alphaMap = island.terrainData.GetAlphamaps(posX, posZ, 1, 1); // On r�cup�re la position du joueur calcul� au dessus,
// par rapport � un echantillon de la map de 1 pixel
// Autant de sons de texture que de textures => 4 index pour 4 textures
textureValues[0] = alphaMap[0, 0, 0]; // les 2 première valeurs représente l'offset qu'on met à 0
// car on a récupéré la position exact au dessus
textureValues[1] = alphaMap[0, 0, 1]; // le 3eme index représente l'index de la texture du terrain
textureValues[0] = alphaMap[0, 0, 0]; // les 2 premi�re valeurs repr�sente l'offset qu'on met � 0
// car on a r�cup�r� la position exact au dessus
textureValues[1] = alphaMap[0, 0, 1]; // le 3eme index repr�sente l'index de la texture du terrain
textureValues[2] = alphaMap[0, 0, 2];
textureValues[3] = alphaMap[0, 0, 3];
}
......
using UnityEngine;
/**
* Fichier : PlayFootStep.cs
*
* Auteur : Alexandre Novais
* Date : Mars 2022
* Groupe : TP 4C
*
* Résumé du fichier :
*
* Cette classe utilise les donnée récupéré par DetectTerrainSound afin de joueur des bruits de pas.
* Elle controle les conditionnel du joueur.
*/
public class PlayFootStep : MonoBehaviour
{
......@@ -63,10 +75,10 @@ public class PlayFootStep : MonoBehaviour
}
}
//fonction pour rcuprer les clip audio
//fonction pour r�cup�rer les clip audio
AudioClip GetClip(AudioClip[] clips)
{
// Jouer des clips differents chaque pas
// Jouer des clips differents � chaque pas
int tentative = 3;
AudioClip selClip = clips[Random.Range(0, clips.Length - 1)];
......@@ -81,11 +93,11 @@ public class PlayFootStep : MonoBehaviour
void NextClip()
{
audio.pitch = Random.Range(0.9f, 1.1f); // le pitch permet de donn un impression de bruit +- lointain
audio.pitch = Random.Range(0.9f, 1.1f); // le pitch permet de donn� un impression de bruit +- lointain
audio.volume = Random.Range(0.2f, 0.4f);
detect.GetTexture();
// Dfinis le clip jouer en fonction de la texture
// D�finis le clip � jouer en fonction de la texture
if (detect.textureValues[0] > 0)
{
audio.PlayOneShot(GetClip(groundClips), detect.textureValues[0]);
......
fileFormatVersion: 2
guid: 4f21fd09d279c6545972ece97c2a7d3d
MonoImporter:
guid: 656df3978b55e404cbb4d849a6aa8bf6
folderAsset: yes
DefaultImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 2332d3165f2c31245a7da40d9f8bcdab
MonoImporter:
guid: f2b4958bf186c34488f55d8e5368b731
folderAsset: yes
DefaultImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 03995a4b35a8ece4397257886ccb4dc5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File added
fileFormatVersion: 2
guid: 9de26c9400c436b46a96b075d027674d
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment