Page 2 sur 2
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 00:35
par Kaloverian
j'ai maintenant concocté un script permettant normalement de calculer la vitesse d'un objet.
Hélas,il ne fonctionne pas bien
Avant de le poster,je demande s'il existe une fonction dans l'API qui permet de récupérer la vitesse instantanée(en vecteur 3) d'un objet en mouvement
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 01:05
par jmhoubre
Si l'objet a un rigidbody, c'est sa
vélocité.
S'il n'en a pas, tu peux la calculer dans l'update :
- vitesse nulle -> return 0
- calculer vitesse = (nouvelle position - ancienne position) / deltaTime
- ancienne position = nouvelle position
- return vitesse
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 14:48
par Kaloverian
....et pour obtenir l'accélération tangentielle de l'objet en mouvement?
son accélération normale?
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 17:00
par boubouk50
a=dv/dt - L'accélération est la dérivée de la vitesse, c'est à dire, la vitesse par unité de temps.
il suffit de regarder les unités.
v = m/s (mètre par seconde)
a = m/s² (mètre par seconde au carré)
Donc
a = v/t
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 17:54
par Kaloverian
oui je sais ceci en théorie
mais je demande s'il existe des fonctions de l'API qui fournissent ces accélérations(en tant que vecteur3)
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 18:43
par boubouk50
Une accélération sera un float pas un Vecteur3, c'est une valeur, pas une direction.
Donc ta demande n'est peut pas la bonne.
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 22 Mars 2023 19:20
par Kaloverian
en physique,l'accélération est un vecteur
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 23 Mars 2023 09:30
par boubouk50
Si elle est un vecteur, alors c'est que la valeur de l'accélération est multipliée par le vecteur directionnel normalisé. Pareil pour la vélocité (vitesse).
Il te suffit donc de calculer le vecteur directionnel et de le normaliser puis de le multiplier par l'accélération qui est la dérivée de la vélocité dans le temps.
Mais non, je ne sais pas si une API te la calcule pour toi. Heureusement, il y a internet:
https://answers.unity.com/questions/148 ... curat.html
https://gamedev.stackexchange.com/quest ... s-massless
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 25 Mars 2023 03:13
par Kaloverian
pour répondre à mhoubre qui me dit:
"Si l'objet a un rigidbody, c'est sa vélocité"
Ben non,la preuve d'après ce petit script:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//code non OK
public class deviation : MonoBehaviour
{
public GameObject obj;
Rigidbody rt;
Vector3 veloc;
// Start is called before the first frame update
void Start()
{
obj.AddComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.I))
{ obj.transform.Rotate(0,30,0);
rt=obj.GetComponent<Rigidbody>();
veloc=rt.velocity;
print("direction: ("+veloc.x+","+veloc.y+","+veloc.z+")");
}
obj.transform.Translate(Vector3.right*Time.deltaTime);
}
}
A chaque appui de la touche I,direction=(0,0,0) alors que l'objet dévie sur sa translation.
Peut-on me corriger ce petit script por que direction ne soit pas toujours Vector3.zero?
Re: détermination de la direction d'un mouvement rectiligne d'un objet
Publié : 27 Mars 2023 08:58
par boubouk50
Kaloverian a écrit : ↑25 Mars 2023 03:13
pour répondre à mhoubre qui me dit:
"Si l'objet a un rigidbody, c'est sa vélocité"
Ben non,la preuve d'après ce petit script:
Si tu fabriques toi même les preuves... Ce script n'est pas bon.
JMHoubre a raison, la vitesse directionnelle d'un rigidbody est sa vélocité. Pour avoir la vélocité, il faut passer par le rigidbody pour les transformations. tu ne peux pas faire ça:
Mais utiliser les transformations depuis le rigidbody. Regarde la documentation du rigidbody (je n'ai que de la théorie).
Passer par les AddForces ou MovePosition.
Maintenant, si tu colles un rigidbody sur l'objet uniquement pour connaître la vitesse, autant ne pas le mettre et la calculer toi-même. Vitesse = distance / temps. Donc à l'instant t, elle vaut le déplacement que tu lui donnes divisé par le deltaTime, sinon, tu peux prendre plus large (et plus lissé) en calculant la distance parcourue 1 fois par seconde.