Script Tile et Positionnement

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
Archimeed
Messages : 10
Inscription : 14 Oct 2014 23:27

Script Tile et Positionnement

Message par Archimeed » 14 Oct 2014 23:46

Bonjour,
je suis nouveau sur le forum et je suis aussi débutant sur Unity 3D (par contre je suis développeur C/C++ de métier mais c'est la première fois que je fais du C#).
J'essaye de m'entrainer a faire les principes de base d'un RPG Tactics du style Disgaea.
Je suis donc parti par initialisé ma carte via du code et donc j'ai créer un Prefab avec un objet cube standard de Unity 3D.
Jusque la pas de soucis, mais par la suite j'ai voulu mettre un Prefab importé de blender et la au niveau du positionnement tout par de travers.

Voici le code (simplifié pour isolé le problème) :

Code : Tout sélectionner

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

public class GameManager : MonoBehaviour {
	
	public GameObject TilePrefab;
	public GameObject PlayerPrefab;
	public int mapSize = 10;
	
	List <List<Tile>> map = new List<List<Tile>>();
	
	// Use this for initialization
	void Start () {
		generateMap();
	}
	
	void generateMap() {
		map = new List<List<Tile>>();
		for (int i = 0; i < mapSize; i++) {
			List <Tile> row = new List<Tile>();
			for (int j = 0; j < mapSize; j++) {
				Tile tile = ((GameObject)Instantiate(TilePrefab, new Vector3(i - Mathf.Floor(mapSize/2),0, -j + Mathf.Floor(mapSize/2)), Quaternion.Euler(new Vector3()))).GetComponent<Tile>();
				tile.gridPosition = new Vector2(i, j);
				row.Add (tile);
			}
			map.Add(row);
		}
	}
}
Ce que je comprend pas c'est le scale de mon objet cube fait 1 et mon prefab aussi et pourtant tout ce chevauche, voyez plutôt :

Image
Image


Je suppose qu'il s'agit d'une scale relative a l'objet lui même et donc pour le positionnement sa ne conviens pas. J'ai donc cherché un peu pour connaitre la taille réel de mon Prefab et je suis tombé sur des astuces du type bounds.size.x et bounds.size.y. Sauf que a chaque fois que je fais un Log dessus, tout est toujours a 0 donc inutilisable.

Je vous remercie par avance de votre aide.

Cordialement

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Script Tile et Positionnement

Message par giyomuSan » 15 Oct 2014 04:01

Tu utilise le Mesh.bound our renderer bound ?

http://docs.unity3d.com/ScriptReference ... ounds.html

normalement les valeurs de bound devrait te permettre de decaler tes instances comme il le faut.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Script Tile et Positionnement

Message par Alesk » 15 Oct 2014 11:14

Pourrais-tu fournir un package avec tous tes éléments afin de tester en local, sinon, ça va être un peu long de déterminer précisément d'où ça vient

sinon, au lieu de :

Code : Tout sélectionner

Quaternion.Euler(new Vector3())
utilise plutôt :

Code : Tout sélectionner

Quaternion.identity
;)

Archimeed
Messages : 10
Inscription : 14 Oct 2014 23:27

Re: Script Tile et Positionnement

Message par Archimeed » 15 Oct 2014 13:15

Merci pour votre aide,

j'utilise bien le Renderer pour bounds mais cela me retourne toujours 0 :(

Je fais une package dès que je rentre du boulot comme demandé.

Merci encore

Archimeed
Messages : 10
Inscription : 14 Oct 2014 23:27

Re: Script Tile et Positionnement

Message par Archimeed » 15 Oct 2014 20:52

Voila, je vous est fait le package comme vous me l'avez demandé. J'espere que c'est bien comme sa que l'on partage vu que je n'est jamais fait ceci :|

Package

Merci pour votre aide.

Archimeed
Messages : 10
Inscription : 14 Oct 2014 23:27

Re: Script Tile et Positionnement

Message par Archimeed » 16 Oct 2014 21:37

Personne n'as de petite idée ?

j'ai testé toutes ces possibilités :

Code : Tout sélectionner

Debug.Log (TilePrefab.renderer.bounds.size);
Debug.Log (TilePrefab.renderer.bounds.min);
Debug.Log (TilePrefab.renderer.bounds.max);
Et toutes les possibilités retourne 0 :(

Merci

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Script Tile et Positionnement

Message par Alesk » 17 Mars 2015 13:06

Ouch, c'est vieux ça... pour une fois qu'un déterrage de post sert à quelques chose...
Et du coup j'étais passé à coté (je me noie dans les posts >_< et j'en oublie certains)
Comme le package n'est plus dispo, t'as trouvé une solution depuis ? (si jamais tu repasses par là :mrgreen: )

Répondre

Revenir vers « (C#) CSharp »