NGCK c'est une suite d'exercices pour le C/C++ avec un framework ultra simplifié, orienté affichage et jeu vidéo.
L'écran a une résolution de 30x20 et la première commande c'est : KPrintSquare(X,Y)
donc en gros, une ligne dans le programme = tu affiche un carré à l'écran.
http://perso.numericable.fr/ckckck/NGCK_doc_fichiers/image001.png
Sans NGCK, il faudrait bien plus qu'une ligne pour afficher un carré blanc. Quand on veut bosser uniquement le langage et l'algorithmique, c'est pratique d'avoir un environnement simplifié.
Unity possède déja le meme niveau de simplification au niveau de la structure (quand tu crée un gameobject, tu lui mets un script vide qui a un "init" et un "update").
J'ai vu qu'on pouvait definir "2D" dans le type de projet. Y a t il un système de sprite 2D ?
c'est un carré ... et ... c'est blanc
Ca me va ... Si on peut l'afficher plusieurs fois et a plusieurs positions c'est nickel. Car 30x20 = 600 carrés à l'écran.
Oui tu peux en mettre autant que tu veux, et comme c'est un objet "de base" tu peux le créer avec une ligne de code (si c'est ce genre de chose qui t'intéresse)
http://docs.unity3d.com/ScriptReference/PrimitiveType.Quad.html
Je ne sais pas si on peut créer d'autre objet "de base" pour enrichir ton ... "NGCK-like"(si t'en as vraiment besoin, j'ai bien 2-3 techniques en stock qui "simulerait" la même chose)
Pour ce qui est du type de projet (2D / 3D) il n'y a pas vraiment de différence >au premier abord< sachant que, que ton projet soit en 2D ou en 3D, tu peux faire de la 2D ou de la 3D dans chacun deux, voir utiliser les deux en même temps, Unity le gère plutôt bien à mes yeux. Si tu coches "projet 2D", cela va juste mettre ton jeu en "mode 2D" (captent obvious bonjour) et cela va apporter quelque changement dans l'éditeur :
- ta caméra se mettera en mode orthographique (mais tu peux très bien la remettre en perspective)
- le clic droit fera "glisser" ta vue du panneau scène (alors qu'en mode 3D ça change l'orientation)
- faire un glisser-déposer d'une image depuis le panneau assets jusqu'au panneau scène, créera un sprite a cet endroit (alors qu'en mode 3D, cela appliquera cette image sur un modèle 3D comme si c'était une "texture"
Bon ça fait aussi d'autre truc, mais j'ai la flemme d'aller sur la doc tout fouiller.
Enfin juste un petit détail, tu peux passer ton "mode" 2d en 3d (et visse versa) en cliquant sur le bouton "2D" en haut dans ton panneau scène.
Je crois que j'ai dit le principale ...
Lapintade
Il faudrait que tu créé une variable représentant ton carré
var carré : Transform;
Ensuite avec ces lignes tu peut en faire apparaître un en X et Y voulue :
var X : int;
var Y : int;
function Spawn(){
Instantiate (carré, Vector3(X, Y, 0), Quaternion.identity);
}
Tu as plus qu'a changer le X et Y et tu appelle ta fonction Spawn().
Et il faut pas oublier de créer un prefab de ton carré et de l'assigner à ta variable carrée.
Bonne chance !
Merci pour vos réponses.
L'idée serait d'instancier 600 carrés et de les montrer/masquer suivant le besoin. Ca pourrait marcher comme cela.
Tu peux aussi utiliser leur API d'interface, et la fonction GUI.DrawTexture pour afficher des textures à l'écran, dommage qu'unity soit incapable de faire du batching pour ça et soit voué à faire 600 draw calls par frame.
Je vais essayer. Je n'ai pas besoin de performance. Merci.
Ca commence a fonctionner avec GUI.DrawTexture, j'ai pu afficher les 600 carrés. Ca passe par la fonction "OnGui", je ne sais pas encore quand elle est appelée.
Faut que je vois pour gerer cela avec l'update du game object.
" je ne sais pas encore quand elle est appelée. "
Deux fois par frame, et je n'ai pas été confronté à un problème venant du fait qu'elle serait appelée avant ou après update. Cela dit, il est mieux de la restreindre à l'affichage des éléments d'interface et au mieux de la réaction aux boutons (ceux-ci sont une fonction qui renvoie True quand on a cliqué dessus, seulement au deuxième appel de OnGUI donc c'est safe de modifier des données sur le clic d'un bouton, par contre éviter de modifier des données par un autre mécanisme, surtout si ces données contrôlent elle-même l'affichage d'éléments d'interface. )
Merci. Y a t il un moyen de savoir si on est dans le second appel ?
EEEUUUUH,bonjour ... je suis un amateur (vraiment incompétent) en matiere de creation de jeu, donc j'ai des questions surement simple et facile à résoudre :
1. Comment faire pour que le first character controller de base effectue un changement de scène (niveau) lors d'une collision avec un objet particulier ?
2 Quel est le script pour centrer le curseur pendant le jeu et le rendre invisible et où placer se script ?
3 Comment creer une écriture (un texte) qui s'afficherait en bas de l'écran pendant quelque seconde après avoir une colision avec un objet particulier
Merci
lapintade Voir le profil de lapintade
Posté via mobile le 26 octobre 2014 à 11:24:19 Avertir un administrateur
Merci. Y a t il un moyen de savoir si on est dans le second appel ?
Oui.
void OnGUI()
{
if(Event.current.type == EventType.repaint){
//faire quelque chose durant le second appel
}
}
"donc j'ai des questions surement simple et facile à résoudre : "
Le problème, c'est qu'une bonne partie de la réponse à ces questions implique de cliquer sur des boutons donc il faudrait passer deux heures à composer une réponse à base de captures d'écran, ou alors de réexpliquer le principe des scripts et dire de mettre du code dans des fonctions qu'on n'a même pas sous les yeux, ou qu'on aurait testé sur place mais qui ne marcherait pas chez toi pour une raison inconnue, donc plein d'allers-retour en fonction des erreurs que tu obtiens, et le problème se posera pour chaque minuscule étape du développement de ton projet, pourquoi ne pas devenir un amateur moins incompétent en matière de création de jeux via des tutoriels ou whatever de manière à savoir faire les tâches triviales?
Merci!
Je teste cela ce soir
Salut, j'aimerais savoir si il y a quelqu'un qui saurait m'apprendre à faire des animations convenablement. Je m'explique : j'ai un GameObject composé de plusieurs enfants (des models) et je souhaiterais animer ces models pour créer (par exemple) une animation de déplacement. Mais je n'y arrive pas très bien (voir pas du tout en fait ^^). Les animations ont toujours été un soucis pour moi... Si quelqu'un pouvait me MP et me montrer comment faire via Skype, ça serait super ! Merci d'avance
J'ai déjà regardé des tutos sur YouTube, je ne comprend pas très bien non plus ...
une "animation de déplacement", c'est à dire? Marcher, ramper, voler? Les objet sont des modèles déja animés? pourquoi sont ils enfant d'un gameobject?
En clair j'ai un GameObject "Player" (à la base un objet vide). Dans ce GameObject, on a plusieurs GameObjects, représentant chacun une partie du corps (les bras, les jambes, etc...). Ce que je cherche à faire c'est qu'en utilisant l'outil d'animation je puisse créer une animation de marche. Les modèles ne sont pas déjà animés.
Et sinon je suis en train de voir comment je pourrai faire pour animer le modèle sous Blender, pensant que ça serait plus simple ...
Merci les gars, ca fonctionne.
using UnityEngine;
using System.Collections;
public class HelloWorld : MonoBehaviour
{
// --------------------------------------------------
---------
void InitialiseGame()
{
}
// --------------------------------------------------
---------
void GameLoop()
{
}
// --------------------------------------------------
---------
// --------------------------------------------------
-------------------
// -------------------------------------
bool KGetSpace()
{
return Input.GetKey("space"); // gSpacePressed;
}
bool KGetRight()
{
return Input.GetKey("right");
}
bool KGetLeft()
{
return Input.GetKey("left");
}
bool KGetUp()
{
return Input.GetKey("up");
}
bool KGetDown()
{
return Input.GetKey("down");
}
public Texture aTexture;
byte[,] gScreen = new byte[30,20];
float gTimeElapsed=0.133f;
void OnGUI()
{
// if(Event.current.type == EventType.repaint) // Second call
if (!aTexture) {
Debug.LogError("Assign a Texture in the inspector.");
return;
}
// Display array
for (int i=0; i < 30; i++)
{
for (int j=0; j < 20; j++)
{
if ( gScreen[i,j]!=0 )
GUI.DrawTexture(new Rect( (i*Screen.width)/30, (j*Screen.height)/20, Screen.width/30, Screen.height/20), aTexture, ScaleMode.ScaleToFit, true, 0.0F);
}
}
}
void KPrintBall(int i, int j)
{
KPrintSquare(i,j);
}
void KPrintSquare(int i, int j)
{
if ( i<0 || i>=30 || j<0 || j>=20)
return;
gScreen[i,j]=1;
}
void EraseArray()
{
for (int i=0; i < 30; i++)
{
for (int j=0; j < 20; j++)
{
gScreen[i,j]=0;
}
}
}
// Use this for initialization
void Start ()
{
EraseArray();
Debug.Log("Hello World! (Game Object)");
Debug.Log(string.Format("Res = {0}x{1}",Screen.width,Screen.height) );
gTimeElapsed = 0.0f;
InitialiseGame();
}
// Update is called once per frame
void Update ()
{
gTimeElapsed += Time.deltaTime;
if ( gTimeElapsed > 0.133f )
{
gTimeElapsed -= 0.133f;
// Erase array
EraseArray();
GameLoop();
}
}
}
Bonsoir tout le monde,
J'ai besoin d'aide dans la réalisation de mon menu, après avoir suivi plusieurs tutos je n'arrive pas à lancer un son lorsque je clique sur un bouton.
Pouvez-vous m'aider ?
Merci d'avance.
Bonsoir, je recherche un asset ou tutoriel pour réaliser quelque chose de semblable à ceci:
http://www.unity3d-france.com/unity/2012/unityfurs-de-la-2d-a-la-3d/
Merci
-nif , tu utilise quel version d'Unity ?