http://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html
http://docs.unity3d.com/ScriptReference/Time-deltaTime.html
Au lieu de faire une action à chaque frame (et donc si tu lags, tu risques d'en louper), tu le fais dans un laps de temps constant.
Ok merci je vais lire tout ça
Salut je vais poser des questions bête (je sais pas si je suis au bon endroit ?) si non dites moi ou svp
J'ai quelques bases en Javascript et je pratique un peu la progra (html/css/php...) .
Mais je suis pas un AS loin de là, est ce qu'avec ces quelques bases je pourrai m'en sortir sur Unity ou c'est mort faut que je progresse d'abord ?
je suis relativement bon en dessin / j'ai quelques bases en modélisation et progra et je sais ou trouver des musiques gratuites....ça suffit pour faire un jeu seul ou bien c'est impossible ? ( je parle dans le cadre d'un petit projet - c'est à dire un jeu fonctionnel avec une petite durée de vie-)
J'ai vu qu'Unity intègre un moteur 2d mais c'est pas spécialité , c'est un bon choix pour un jeu 2d ou pas du tout ?
Salut,
Je voudrais savoir quelque chose d assez stupide, est ce qu un GUI programmer pour se jouer sur un MAC peut fonctionner normalement sur Android ou iOS ?
Je dirais qu'a partir du moment où tu gere de facon assez basique la prog objet ca passe
Question bete : Unity gere t'il facilement l'execution de plusieurs scripts simultanées ?
Bonjour,
Déjà, je tiens a précisé que je m'y connais pas du tout en programmation et à unity 3d (du moins, j'en ai une
connaissance mediocre)
Je voudrais savoir comment l on fait pour faire déplacer un gameobject lorsque l'on maintient un clic de souris ...
Pour l instant seul le maintient du clic de la souris me tracasse vraiment...
En JS
Je veux que l on clique sur un objet précis , donc Input.GetMouseDown ne fonctionnera pas...
Il me faut plus un truc du style
function OnMouseDown ()
Mais qui comptera le maintient du clic
Ensuite si il faut précisé , l objet a cliqué et l objet qui se déplacera sont différents, mais j avais prévu d utiliser une variable
Le déplacement n est pas encore certain, peut etre une rotation... alors je n ai pas encore décidé de taper le code pour mais je peux le faire sans problème
Merci
"Question bete : Unity gere t'il facilement l'execution de plusieurs scripts simultanées ? "
C'est le principe, on peut mettre plusieurs scripts sur un objet, plusieurs objets avec des scripts, après il peut éventuellement arriver que l'ordre d'exécution pose des problèmes mais c'est sans doute gérable
il peut éventuellement arriver que l'ordre d'exécution pose des problèmes mais c'est sans doute gérable
Dans Project Settings tu as un module "Script execution order" au cas où justement tu rencontres des problèmes.
ludoxe
public class Window : MonoBehaviour
{
public bool estActif { get { return this.gameObject.activeInHierarchy; } private set { this.gameObject.SetActive(value); } }
public bool peutSeDeplace; // Permet de deplacer la fenetre avec la souris
private List<GameObject> empecheDeplacement; // Liste des GameObjects qui bloquent le deplacement de la fenetre
/* Deplacer l'objet avec la souris */
[System.NonSerialized]
private Vector3 positionOriginal;
[System.NonSerialized]
private bool deplacementFenetre;
void Awake()
{
// Sélectionne les objets à ne pas déplacer
if (peutSeDeplace)
{
this.empecheDeplacement = new List<GameObject>();
foreach (Transform child in transform.GetComponentsInChildren<Transform>())
{
if (child.GetComponent<Button>() || child.GetComponent<ScrollRect>())
this.empecheDeplacement.Add(child.gameObject);
}
}
}
public void Activer()
{
this.estActif = true;
}
public void Desactiver()
{
this.estActif = false;
}
void Update()
{
/* Gestion du deplacement de la fenetre sur l'ecran via la souris */
if (this.peutSeDeplace)
{
// Quand Clique Gauche + si on ne clique pas sur un bouton + si on a cliqué sur un enfant de ce gameobject
if (Input.GetMouseButtonDown(0) && !this.empecheDeplacement.Contains(GameManager.Get.objectClique) &&
GameManager.Get.objectClique.transform.IsChildOf(this.transform))
{
positionOriginal = Input.mousePosition;
this.deplacementFenetre = true;
}
if (Input.GetMouseButton(0) && deplacementFenetre == true)
{
Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition - positionOriginal);
Vector3 move = new Vector3(pos.x * 16, pos.y * 10, 0);
transform.Translate(move, Space.Self);
positionOriginal = Input.mousePosition;
}
if (!Input.GetMouseButton(0)) this.deplacementFenetre = false;
}
}
}
J'espère que ça peut t'aider même si c'est en C#.
Ça m'a l'air déjà compliqué... mais je verrai ça ce soir et te tiendrai au courant
Le 12 mai 2016 à 00:16:07 VaultDeveloper a écrit :
http://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html
http://docs.unity3d.com/ScriptReference/Time-deltaTime.htmlAu lieu de faire une action à chaque frame (et donc si tu lags, tu risques d'en louper), tu le fais dans un laps de temps constant.
Alors j'ai fais une petite pause et j'ai repris mon travail, je ne comprend absolument pas comment ces scripts marchent
Aussi j'ai avancé et j'ai mis une musique pour mon jeu, le seul problème c'est qu'à chaque fois que le personnage meurt et que ça reload le niveau, la musique repart à 0, comment changer ça ?
Aussi j'ai avancé et j'ai mis une musique pour mon jeu, le seul problème c'est qu'à chaque fois que le personnage meurt et que ça reload le niveau, la musique repart à 0, comment changer ça ?
http://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html
Tous les scripts (classes) qui dérivent de MonoBehaviour (C'est indiqué en haut des fichiers, à côté du nom de leur classe), ont certaines fonctions (Awake(), Start(), Update(), FixedUpdate(), OnDestroy()...).
Tu n'as plus qu'à les écrire dans ton fichier pour t'en servir.void Update() { /* Mon algortihme */ }
Tu mets dans les accolades ce que tu veux faire à chaque Update (plusieurs fois par frame).
Les Input tu dois les capturer dans une fonction Update(), pour n'en rater aucune. Et FixedUpdate() tu dois t'en servir pour faire des actions à intervalle régulier (les fonctions FixedUpdate() sont appelé un certaines nombres de fois par Frame (en général 30 ou 60).
Quand tu charges un nouvelle scène, il détruit tous les éléments existants dans la scène actuelle, et là recréé à partir de 0. DontDestroyOnLoad permet d'éviter ça. Tu peux appeler cette fonction dans la méthode Start() :void Start()
{
//Exemple
DontDestroyOnLoad(this);
}
Le 17 mai 2016 à 07:10:03 ludoxe a écrit :
Ça m'a l'air déjà compliqué... mais je verrai ça ce soir et te tiendrai au courant
J'avoue que je ne te l'ai pas fait sur mesure, je l'avais fais plus tôt dans la soirée, et je me suis dit que ça tombait bien vu que tu voulais avoir à peu près pareil.
J'ai un Canvas (Screen space - Camera), j'ai un panel dedans, et j'ai appliqué un script héritant de cette fonction à mon panel. Par exemple, si tu fais un script Test sur le panel :public class Test : Window
lui attribuera les fonctionnalités de mon script. Comme ça, tu n'as pas besoin de le modifier s'il fonctionne comme tu le souhaite.
Merci !
Je n'ai pas trop compris ton script étant donné que je n'y connais rien en C# (et en plus, le topic sur smartphone est presque illisible)
Mais si j'ai bien compris, c est quelque chose que tu attrapes et que tu déplaces ?
Parce que moi ce que je veux, c est (avec une grande préférence en JS) un objet où lorsque l on clique dessus, un autre objet se déplace toute la durée du clic
Mais merci qu'au même
Je suppose qu'il y a quelques lignes à modifier. Le transform à déplacer doit être un attribut de la classe.
Il faut aussi capturer la position de la souris à l'origine, un Vector3 prend la position actuelle de la souris moins la position au début du clique et additionne se résultat à la position actuelle du transform à déplacer.
Le reste (les if etc...) n'a pas besoin de changer je pense.
Ce que je veut dire par "gerer en meme temps" c'est de savoir si unity peut supporter le fait de mettre PLEIN de gameobject. Dans mon bomberman j'ai la masse de prefab "bloc mur" qui sont instantiées : du coup j'ai peur pour les perfs
Les jeux comme Endless Space, ou les triple A qui sont fait avec, je pense qu'ils utilisent beaucoup de scripts actifs en même temps.
Après, ça dépend quelle plateforme tu vises. Si c'est pour du web, ça risque de ralentir ton jeu.
VaultDeveloper
Je suis pris par des activités en tout genre, je ne pense pas pouvoir prendre le temps de voir tes conseils (ou autre si c est autre chose), en tout cas, le weekend ou celui du prochain, je verrai ce que tu m as dis et je reverrai mes codes, le tien et ce que tu m as dit...
Si tu veux, je peux te contacter en Message Privé pour t'informer de mon avancé de mon problème
Pas de problème, d'autres personnes m'ont contacté par MP.
Par contre, pense à mettre un lien vers la page du topic où tu avais posé ta question pour que je puisse relire.