[RESOLU] Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
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
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
[RESOLU] Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
Bonjour à vous et je vous remercie d'avance pour toutes les réponses que vous pourrez m'apporter,
je vais vous expliquer mon problème très rapidement : j'ai besoin, pour un projet sur unity 3D qu'un gameObject suive mon player sur l'axe z et qu'il n'y ait aucune autre modification. ( via un script )
merci d'avance
je vais vous expliquer mon problème très rapidement : j'ai besoin, pour un projet sur unity 3D qu'un gameObject suive mon player sur l'axe z et qu'il n'y ait aucune autre modification. ( via un script )
merci d'avance
Re: Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
Peut être simplement un truc comme ça :
Code : Tout sélectionner
Vector3 objectPosition = transform.position; // à mettre en start si le x et y ne bougent jamais
objectPosition = new Vector3(objectPosition, objectPosition, player.transform.position);
- boubouk50
- ModoGenereux
- Messages : 6225
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
Tu peux également le parenter, mais tout suivra:
Code : Tout sélectionner
this.transform.parent = //le transform du player
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
Merci pour cette réponse, mais, petite question objectposition correspond à une variable ou juste le nom du gameobject+position ?Liven a écrit : ↑28 Juil 2018 01:20Peut être simplement un truc comme ça :
Code : Tout sélectionner
Vector3 objectPosition = transform.position; // à mettre en start si le x et y ne bougent jamais objectPosition = new Vector3(objectPosition, objectPosition, player.transform.position);
Re: Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
Merci pour tout ce que vous avez pu m'apporter
j'ai enfin trouvé la solution
j'ai enfin trouvé la solution
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class drafgon : MonoBehaviour {
public Vector3 position;
public GameObject Player;
public GameObject RedDragon;
// Use this for initialization
void Start () {
Vector3 playerPosition = transform.position;
}
// Update is called once per frame
void Update () {
RedDragon.transform.position = new Vector3(transform.position.x, transform.position.y, Player.transform.position.z);
}
}
- boubouk50
- ModoGenereux
- Messages : 6225
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
Quelques explications/infos/conseils en regardant ton code:
Code : Tout sélectionner
public class Dragon : MonoBehaviour {
public GameObject player;
Code : Tout sélectionner
public Vector3 position;
public GameObject player;
public GameObject redDragon;
Aussi, l'objet sur lequel est associé le script et directement accessible depuis le code. Pas besoin de le passer en variable. Je suppose qu'ici, le script est mis sur le GameObject RedDragon. Dans ce cas tu peux l'appeler directement avec this, sans le déclarer.
Code : Tout sélectionner
// Use this for initialization
void Start () {
Vector3 playerPosition = transform.position;
}
Code : Tout sélectionner
RedDragon.transform.position = new Vector3(transform.position.x, transform.position.y, Player.transform.position.z);
transform.position.x équivaut à this.transform.position.x qui équivaut à RedDragon.transform.position.x. Car à chaque fois tu accèdes la position x du Component Transform de l'objet qui possède ce script.
Voilà ce que donne ton code:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Dragon : MonoBehaviour {
public GameObject player; //Ici, le player à renseigner dans l'Inspector
// Update is called once per frame
void Update () {
transform.position = new Vector3(transform.position.x, transform.position.y, player.transform.position.z);
}
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Ajuster la position d'un gameObject sur l'axe z en fonction du FirstPersonCharacter
bravo, effectivement ça doit être fonctionnel, je me permet juste une petite remarque d'un point de vue opti : appeller ou modifier un transform.position (ou rotation) est très gourmand et à éviter à chaque que l'on peut dans les update.
Du coup comme la position x et y de ton objet ne change jamais tu peut les stocker dès le début dans une variable et utiliser cette variable par la suite. Ce qui donne pour ton code :
Edit : Je vois que mon VDD à été un poil plus rapide. C'est conseils sont tout à fait pertinents (mais il reste le petit soucis d'opti que j'évoque, on va dire que c'est complémentaire)
Du coup comme la position x et y de ton objet ne change jamais tu peut les stocker dès le début dans une variable et utiliser cette variable par la suite. Ce qui donne pour ton code :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class drafgon : MonoBehaviour {
public Vector3 redDragonPosition; // c'est la variable qui va stocker la position par défaut de ton object (que tu peux passer en privé si tu na pas besion d'y accéder dans d'autres sripts
public GameObject Player; // si tu n'appel pas cette variable depuis un autre script vaut mieux utiliser "[serialisedfield] private" que "public" (c'est une bonne habitude à prendre que beaucoup de tuto négligent)
public GameObject RedDragon; // idem
// Use this for initialization
void Start () {
redDragonPosition= RedDragon.transform.position; // ici tu stock en mémoire la position par défaut de l'objet (par la suite tu y récupérera les valeur x et y)
}
// Update is called once per frame
void Update () {
RedDragon.transform.position = new Vector3(redDragonPosition.x, redDragonPosition.y, Player.transform.position.z); // ici tu attribue la nouvelle position en prenant comme référence la position x et y par défaut de ton objet (et ça t'évite d'appeler 2 fois le transform.position) par contre pour z, tu doit bien aller le cherché dans le transform.position du player puisque celui ci évolue en court de partie.
}
}