[DB-MY] rotation d'une arme pour taper

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
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
vegetalain
Messages : 89
Inscription : 15 Août 2010 17:18
Localisation : la ferté-milon
Contact :

[DB-MY] rotation d'une arme pour taper

Message par vegetalain » 22 Juin 2017 11:52

Bonjour, alors voilà j'aimerai créer une arme de mêlé qui s'inclinerait quand on fait "click gauche" et se redresserait toute seule. Comme un coup de bâton x)... mais sans animation. Juste "en script".

Donc pour voir, je suis parti d'un script de "porte" et je me suis dit qu'en le bidouillant un peu telle ou telle donnée, ça fonctionnerait mais je ne parviens pas à modifier l'axe d'inclinaison du truc... Finalement après plein de test et de modif un peu partout, ça part dans tous les sens sauf le bon :hehe:

Quelqu'un pourrait-il me dire pourquoi ça ne marche pas svp?... x/
Voici le script :

Code : Tout sélectionner

var AngleX : float = 0.0;
var AngleY : float = 0.0;
var AngleZ : float = 0.0;

private var targetValue : float = 0.0;
private var currentValue : float = 0.0;
private var easing : float = 0.1;

var Woush:AudioClip;
var Arme0 : GameObject;

function Update () {
    currentValue = currentValue + (targetValue - currentValue) * easing;
    Arme0.transform.rotation = Quaternion.identity;
    Arme0.transform.Rotate(45, currentValue, 45);

 	if(Input.GetButtonDown ("Fire1")){ 
    targetValue = AngleY;
    currentValue = -90;
    GetComponent.<AudioSource>().PlayOneShot(Woush);
	}
 	if(Input.GetButtonUp ("Fire1")){ 
    currentValue = AngleX;
    targetValue = 90;

	}
}


Merci de vos lumières
l'absence de plumes, rend libre

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: [DB-MY] rotation d'une arme pour taper

Message par evereal » 22 Juin 2017 12:14

Code : Tout sélectionner

Arme0.transform.Rotate(45, currentValue, 45);
Ici tu fais une rotation sur les 3 axes, pas étonnant que ça parte dans tout les sens.

Le plus simple serait de lui faire faire une rotation sur l'axe Y en worldspace pour avoir un mouvement de haut en bas.

Code : Tout sélectionner

Arme0.transform.Rotate(Vector3.up * currentValue, Space.World);
https://docs.unity3d.com/ScriptReferenc ... otate.html
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Verrouillé

Revenir vers « (Js) Javascript »