Je me suis inscrit recement sur se site que je parcours beaucoup ces derniers temps ^^.
Petite presentation :
Je me suis lancer dans un projet ; que je vous detaillerez plus bas ; avec un ami sur UNITY.
J'ai de vague notion de programmation, j'ai fait plein de tuto mais j'ai toujours buter sur la documentation des languages, ou arreter a la programmation POO.
Mon projet :
Je veux realiser un jeux 2D , vu de profil, ressemblant quelque peux a mine craft, le personnage est bloquer autour de lui par du decor.
Le decor se genere selon sont deplacement , le but etant que le personnage ne vois jamais la generation de terrain , car il se situe en dehors de son champ de vision,
J'ai donc travailler ses deux aspects et au fil de mes recherche je suis arriver a un resultat, mais je ne suis pas 100% sur du code que j'execute ....^^
je travaille avec des image realise par mes soin en 50px par 50px . un sprite de cette taille prend donc tout la place de la case dans unity et se situe a des point cardinaux ENTIER.
Destruction decor = j'ai utiliser un raycast pour detecter l'objet le plus proche selon la position du joueur :
Code : Tout sélectionner
if (attaqueGa) //
{
araGa = PosXY - araGa; // PosXY = position en INT du sprite , araGa = V2(5,0.5f)
PosXY = PosXY + PosXYJZ; // POS. joueur - POSXYJZ = (-1.1f, 0.5f)
RaycastHit2D abracadabra = Physics2D.Raycast(PosXY, araGa, 0.5f); // je cast
abracadabra.transform.gameObject.GetComponent<Renderer>().enabled = false;
yolo = abracadabra.transform.gameObject.GetComponent<Collider2D>();
yolo.isTrigger = true;
Debug.Log("saluGAUCHE" + abracadabra.collider.transform.position);
}
Mon raycast doit partir en dehors du boxcollider de mon personnage , se situer a peu pres a la moitie de celui ci et aller tres peu en avant .... ai'je reussi??
IG se code marche bien.
Viens ensuite la generation de terrain , une pour la droite , gauche et en bas , j'ai utiliser overlap.box car le raycast me poser trop de probleme ... :
Code : Tout sélectionner
Seek = new Vector2(3f, 3f);
prout = new Vector2(0, 1);
PosXY = new Vector2(IposXD, y); // PosXY V2 en INT , les float m'on poser trop de probleme dans la generation
y = y + 3; // position Y du joueur +3
IposXD = IposXD + 3; // la position du joueurs a chaque frame arrondi en entier + 3
if (Mdroite) // si j'appuie sur "right" key
{
for (int w = 0; w < 4; w++)
{
yolo = Physics2D.OverlapBox(Seek, Sook, 0); // JE CREER MA BOXOVERLAP
Debug.Log("seek" + Seek);
Debug.Log(yolo == null);
//IposX = IposX + 3;
//y = y + 3;
if (yolo == null)
{
Instantiate(sol, new Vector2(IposXD, y), Quaternion.identity);
Seek = Seek - prout;
y = y - 1;
Debug.Log("j =" + y);
Destroy(yolo); // JE DETRUIS YOLO !!!
}
}
}
Un autre probleme et que je ne vois pas, encore, ou se situe reelement mon Overlap.box , je voulais la creer en plein millieu d'un decor , creer une petite box au centre de mes sprite 50px par 50px , qui se deplace et qui genere. j'ai plus l'impression qu'elle commence en bas a gauche qu'au centre ... merci de m'eclairer ^^.
et alors pour creer une fonction la aussi enooorme probleme , j'ai 3-4 Vector2 a passer en parametre et d'autre variable.
IG le code ne marche pas totalement comme je l'espere (y negatif probleme)
Je voulais aussi avoir des renseignement sur ce qu'est une CLASS , je me rappel avoir entendu ce mot dans d'autre tutoriel mais je ne voyais pas l'importance, et la on dirait que c'est un truc totalement gerer par untity.
Je vous remercie pour la lecture de ce post ..
Je tiens a m'excuser si celui ci reste lourd a lire , j'essaierai de m'ameliorer par la suite
Je tiens a remercier particulierement la communauté et ceux qui entretiennent le forum .
XeXo.