[RESOLU] [MY] Déplacement Vector2

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
Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

[RESOLU] [MY] Déplacement Vector2

Message par kikicosmo » 08 Fév 2017 13:09

Salut à tous

bon, je ne trouve pas ce que je voudrais faire (et pourtant je cherche)
je ne poste pas souvent ici car je préfère essayer de me débrouiller seul, mais là je cale, pourtant c'est surement un truc tout bête, mais je ne trouve pas!!!

dans cette ligne de code:

Code : Tout sélectionner

GetComponent<Rigidbody2D>().velocity = Vector2.up * speed;
je voudrai que l'objet ne se déplace pas vers le "up" mais qu'il continue sa direction (genre, il tombe si cette fonction est appelée, il remonte et c'est pas bon lol
du coup je ne sais pas comment modifier cette ligne pour que la vitesse change mais pas la direction qu'il effectue...
merci de votre aide ;-)
Dernière édition par kikicosmo le 08 Fév 2017 18:10, édité 2 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] Déplacement Vector2

Message par boubouk50 » 08 Fév 2017 13:52

Ça n'a pas vraiment de sens ce que tu dis. Décris le comportement que tu souhaites, quel effet, quel cas.
Qui plus est la vélocité est déjà le vecteur vers lequel tu te diriges.
"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

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: [MY] Déplacement Vector2

Message par kikicosmo » 08 Fév 2017 15:06

Oui c'est vrai, j'ai oublié de dire le comportement lol
en fait c'est un jeu de casse-brique,
lorsque la balle touche la raquette, il se passe ça:

SCRIPT DE LA BALLE

Code : Tout sélectionner

if (col.gameObject.name == "racket") {
			float x = hitFactor (transform.position,
				         col.transform.position,
				         ((BoxCollider2D)col.collider).size.x);

			Vector2 dir = new Vector2 (x, 1).normalized;
			GetComponent<Rigidbody2D> ().velocity = dir * speed;
j'arrive à lui faire changer de vitesse lorsque la raquette touche un goodie, mais le problème est que je le fais avec cette fonction:

SCRIPT DE LA RAQUETTE

Code : Tout sélectionner

if (col.gameObject.tag == "acceleration") {
			ball.GetComponent<Balle2>().speed = 6;
			ball.GetComponent<Balle2>().Acceleration();
		}
ET DE LA BALLE (qui contient le script "Balle2" avec la fonction "Acceleration" ci-dessous:

Code : Tout sélectionner

GetComponent<Rigidbody2D>().velocity = Vector2.up * speed;
voilà, j'espère que tu me comprendra ;-)

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: [MY] Déplacement Vector2

Message par kikicosmo » 08 Fév 2017 15:10

oups, la suite de ce que je voulais dire...

du coup lors du changement de vitesse, la balle refait un "up" et je ne sais pas quoi mettre dans le code, pour que la vitesse change mais pas sa trajectoire...

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] Déplacement Vector2

Message par boubouk50 » 08 Fév 2017 15:24

Ok, ça m'a paru évident donc je comprenais pas ce qui n'allait pas, dsl.
Ton vecteur, c'est ta vélocité elle-même. Tu ne fais changer que sa magnitude.

Code : Tout sélectionner

GetComponent<Rigidbody2D>().velocity *= speed;
Par contre, tel quel, ta balle va accélérer de speed fois à chaque touche, donc ce sera exponentiel.

Code : Tout sélectionner

RigidBody2D rigidBody = GetComponent<Rigidbody2D>();
rigidBody.velocity += rigidBody.velocity.normalized * speed;
Avec ce code, la vitesse augmentera de façon constante, tu ajouteras toujours la même accélération.
"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

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: [MY] Déplacement Vector2

Message par kikicosmo » 08 Fév 2017 16:10

Effectivement, j'ai testé la premiere ligne, et effectivement, la balle se casse chez le voisin lol
par contre l'autre me met les RigidBody2D en rouge :shock:

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] Déplacement Vector2

Message par boubouk50 » 08 Fév 2017 16:12

C'est parce qu'il y a une faute de frappe dans le code que je t'ai donné. Je l'ai écrit de visu.
Change RigidBody2D par Rigidbody2D. Vérifie le reste aussi. Change aussi la valeur de ta variable speed, elle doit être trop grande.
"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

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: [MY] Déplacement Vector2

Message par kikicosmo » 08 Fév 2017 16:25

ouai lol j'aurai "DU" le voir ça lol
bref, bon ben ce passe rien!!!
la balle continue a la même vitesse jusqu’à ce qu'elle touche la raquette ou là, la vitesse change, puisque la balle relance à la même vitesse à chaque fois, mais en cours de route, rien ne se passe

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: [MY] Déplacement Vector2

Message par kikicosmo » 08 Fév 2017 16:31

RE,
le code fonctionne bien, car lorsque le goodie "ralentir" est activé, au bout de 10 secondes, la vitesse redevient normal et là.... la balle continue sa trajectoire en accélérant, mais lors du "freinage" , elle ne freine pas de suite, seulement après avoir toucher la raquette.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] Déplacement Vector2

Message par boubouk50 » 08 Fév 2017 16:43

Comprends tu ce qui se passe dans ton code?
Tu as un comportement d'accélération, il te suffit juste de l'adapter en fonction de ce que tu touches. Je vois pas où tu pioches, ton code est fonctionnel, il suffit juste d'appeler la bonne fonction au bon moment en fonction de ce que tu touches. Là, ce n'est pas un problème de code mais de compréhension ou de logique ou de comportement de ton jeu.

Je connais pas ton jeu, je ne sais pas ce que tu veux faire exactement
le code fonctionne bien, car lorsque le goodie "ralentir" est activé, au bout de 10 secondes, la vitesse redevient normal et là.... la balle continue sa trajectoire en accélérant, mais lors du "freinage" , elle ne freine pas de suite, seulement après avoir toucher la raquette.
ça ne veut rien dire pour moi.
"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

Répondre

Revenir vers « (C#) CSharp »