Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Zanaki
Messages : 18
Inscription : 26 Déc 2018 17:30

Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par Zanaki » 31 Déc 2018 15:58

Bien le bonjour tout le monde.

Je vais "Essayer d'être le plus clair et précis possible pour expliquer mon problème, même si je doute que la tâche sera facile.
On parle d'Unity donc, forcement ça sera à propos de la création d'un jeux video.

En faites, j'aimerais faire simplement descendre une sorte de cube créer par mes soins.
Comme un Tétris, Les tétromino qui descende jusqu'au sol ou qu'ils touchent une autre pièces. J'aimerais faire un système similaire mais sans pouvoir manipuler les Cubes.

S'auriez-vous m'orienté s'il vous plait ?? Parce que là... Je stagne... Je ne sais par quoi commencer !
J'ai fais un petit code, mais le cube continue d'essayer de descendre même quand il touche le sol...

Puis, un autre système pour faire en sorte que les cubes surviennes aléatoirement un fois que le cubes précédent vient de toucher son point d'arrêt (le sol ou un autre cube).

En tout cas, j'espère que vous pourriez m'aider et à débuter se genre de petit jeux. Merci à tous et à bientôt.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par EmileF » 31 Déc 2018 17:02

Salut,

As-tu essayé le Rigidbody avec l' UseGravity cochée et avec un collider sur ton cube
et un collider sur ton sol?

Avec ça tu n'as même pas besoin de code
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

MisterFOX
Messages : 1
Inscription : 31 Déc 2018 17:11

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par MisterFOX » 31 Déc 2018 17:28

tu a plusieurs solutions soit tu utilise un rigidbody avec la case useGravity coché en cochant aussi toute les contrainte de rotation x y et z pour pas que l'objet tourne automatiquement pour un spawn de piece aleatoire tu peux utilisé une list ou il y aura toute tes piece et faire un int count = Randown.Range(0, (ton nom de list).Count) et faire une instance((ton nom de list)[count], ta position de spawn en Tranform, Quaternion.itentity)

Zanaki
Messages : 18
Inscription : 26 Déc 2018 17:30

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par Zanaki » 31 Déc 2018 18:18

Hey merci beaucoup pour vos réponses.

emile121153 =>
Oui, au début c'est exactement se que je faisais. Le résultat, n'est pas trop mal je dois dire. Mais, est-ce que ça suffira ?? Je me demande si ça me bloquera pas par la suite... Ça serait dommage si ça me bloque, ou si des bugs surviennent en cours de route à force de faire des codes. C'est pourquoi, je me demander si un codes simple d'utilisation, ne serait pas plus judicieux. Mais Après, rien ne m'empêche de laisse comme ça pour le moment.

MisterFOX =>
Créer une liste où il y aura tout les cubes ?? Mais en faites, je veux qu'un seul cubes, se même cube se répétera, dans cette liste, je placera qu'une seul fois le cube, si je met 3 cube différent alors dans la liste je met les 3 cubes ??

J'ai dus mal à comprendre la ligne de code...
int count = Randown.Range(0, (ton nom de list).Count) et faire une instance((ton nom de list)[count], ta position de spawn en Tranform, Quaternion.itentity)

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par EmileF » 01 Jan 2019 16:45

Bonne année
Zanaki a écrit :Mais, est-ce que ça suffira ?? Je me demande si ça me bloquera pas par la suite...
Qu'est ce qui peut bloquer? Précise ton idée et ce que tu veux faire avec tes cubes.
Zanaki a écrit :ou si des bugs surviennent en cours de route à force de faire des codes..
Quel bugs, quels codes puisque pour cette partie tu n'as plus besoin de code??

Sinon, pour un jeu genre Tétris, tu devrais peut-être partir d'une grille et déplacer tes cubes de case en case.
Tu pourras ainsi arrêter ton cube si la case a atteindre est occupée, ou s'il n'y a plus de case.
Et quand ton cube et arrivé tu décores ta case comme ton cube et tu lui affecte une valeur, un booléan par exemple, pour signifier qu'elle est occupée, et tu redémarre avec ton cube en haut.
Plus besoin de collider ni de rigidbody avec cette possibilité.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Zanaki
Messages : 18
Inscription : 26 Déc 2018 17:30

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par Zanaki » 01 Jan 2019 21:56

Je pense que le mieux serait de dire en gros l'idée du jeux.

Donc tout comme un Tétris, je voudrais faire en sorte de que des objets tombe jusqu'au sol, puis qu'ils se superposent.
Contrairement à Tétris, se ne sont pas des Tetrominos, qu'on peux manipuler pour essayer d'en faire une ligne pour ainsi gagné des points. Mais plutôt dans le sens, Sauté, sur les cubes pour ne pas se faire Écrasé.

Le bute du jeux sera d'essayer d'allez le plus haut possible, en esquivant les Cubes qui risque de nous tomber sur la tête. Faudra les esquivé et monter sur celle-ci. Les cubes, tomberons de plus en plus vite alors faudra faire preuve de beaucoup de réflexe et être ingénieux pour pas monté sur n'importe quel cube qui tombe sous peine d'être bloquer ou se faire écraser par le suivant. Voilà l'idée du jeux.

Donc, j'aurais aimer géré toutes la Structure des cubes dans un scripte, comme le font ceux qui créer les Tétris sur internet.

Je voulais commencer par faire un truc facile... Mais au bout du compte quand on ne sais pas par où commencer tout devient compliquer.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par EmileF » 02 Jan 2019 11:18

Il faudrait préciser si tu es en 3D ou 2D, Le principe sera à peu prêt le même, mais la programmation peut être très différente.

Il me semble donc que les rigidbody avec les colliders sont la meilleure solution.
Tu pourras ainsi monter dessus.

Je me suis amusé à créer un petit quelque chose pour t'aider

Dans la scène j'ai créé un plan pour le sol.
Un cube avec un matériau de couleur pour le repérer.
J'ai réglé ma caméra de façon à voir mon cube et mon plan.

J'ai créé un empty Que j'ai appelé Manager dans lequel j'ai ajouté un script "Manager".
Dans mon Cube j'ai ajouté un Script nommé "Cube". Qu'elle originalité...

Voila le script manager:

Code : Tout sélectionner

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

public class Manager : MonoBehaviour
{
    public GameObject CubeModele;
    //La position mini en largeur, hauteur et profondeur.
    public Vector3 Mini;
    //La position maxi en largeur, hauteur et profondeur.
    public Vector3 Maxi;
    //La vitesse de descente mini
    public float SpeedMini;    
    //La vitesse de descente maxi
    public float SpeedMaxi;


    bool Instancie;
    Cube CubeEnCours;

    void Start ()
    {
        Instancie = true;
    }
	
    void Update ()
    {
	if (Instancie)
        {
            //Pour n'en instancier qu'un à la fois
            Instancie = false;
            //Calcule une position aléatoire dans la zone que tu auras défini
            Vector3 pos = new Vector3(UnityEngine.Random.Range(Mini.x, Maxi.x),
                                      UnityEngine.Random.Range(Mini.y, Maxi.y),
                                      UnityEngine.Random.Range(Mini.z, Maxi.z));
            //Instancie un nouveau cube
            CubeEnCours = Instantiate(CubeModele, pos, Quaternion.identity, transform).GetComponent<Cube>();
            //Là j'ai mis une vitesse de descente aléatoire, à toi de le gérer comme tu veux
            CubeEnCours.Speed = UnityEngine.Random.Range(SpeedMini, SpeedMaxi);
            CubeEnCours.Move = true;
        }
        //Quand le cube est posé on en crée un autre
        if (!CubeEnCours.Move)
            Instancie = true;
    }
}

J'ai ajouté des commentaires pour expliquer ce qu'il fait.

et voilà le script Cube:

Code : Tout sélectionner

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

public class Cube : MonoBehaviour
{
    public bool Move;
    public float Speed;

    void Update ()
    {
        //tant que le cube est move on le déplace
        if (Move)
            transform.position += Vector3.down * Time.deltaTime * Speed;
	}

    private void OnCollisionEnter(Collision collision)
    {
        //Si le cube est entré en collision on l'arrete
        Move = false;
    }
}

Il ne te reste plus qu'à donner les position mini et maxi du cube dans les 3 directions, et les vitesses Mini et maxi de descente.

Chez moi, le principe fonctionne. Pour toi, il faudra sûrement apporter des précisions pour faire ce que tu souhaites
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Zanaki
Messages : 18
Inscription : 26 Déc 2018 17:30

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par Zanaki » 02 Jan 2019 19:02

Ahhhh... Que suis-je bêtes, j'ai complétement oublie de préciser que c'était un jeux 2D. J'étais pourtant persuadé l'avoir fais dès le premier message... Pardonnez-moi.

Merci beaucoup pour t'es réponses. Je vais éplucher ça avec plus de patience et en profondeur quand j'aurais un peux plus de temps devant moi.

J'ai beaucoup ri en te lisant, j'aime beaucoup la petit pincette d'humour dans ton texte.

Une fois que j'aurais essayer tout ça, je ne manquerais pas de revenir ici pour t'en donner mes impressions, mes retour et tout et tout. Encore un grand merci à toi. Que se soit pour le temps, la patience et l'aide que tu nous apporte.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par EmileF » 02 Jan 2019 19:13

Pas de soucis.
Là j'ai supposé que tu était en 3D.
En positionnant la camera horizontalement, et en Orthographique, tu auras le même effet qu'en 2D.
Si ça te convient les modif pour passer en 2D ne seront pas énormes.

A bientôt
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Zanaki
Messages : 18
Inscription : 26 Déc 2018 17:30

Re: Nouveau => débutant ou pas... J'ai vraiment besoin d'aide. Unity C#

Message par Zanaki » 12 Jan 2019 08:23

Hey merci beaucoup ! Et vraiment désolé pour le retard. Alors j'ai regarder, lu, appris, et compris le code source :)
Par contre, j'ai pas réussi à faire les collision, combien même j'en est mis des tonne xD m'enfin... Je me suis totalement tourné vers un autre jeux, plus facile d'accès sur Androïde et toujours en 2D
Je voulais t'en informer, c'est la moindre des chose vu le temps que tu nous consacre.

Encore merci à toi et à bientôt ! Oui, peut-être que tu continuera à répondre au divers problème que je serais susceptible de rencontrer :)

Répondre

Revenir vers « Scripting »