FPS simulation gravité dans un vaisseau en mouvement
Publié : 13 Août 2021 02:05
Bonsoir,
Cela fait maintenant quelques soirées que je passe à regarder des vidéos et chercher des scripts qui me permettent de faire ce que je veux mais j'ai toujours des problèmes avec la gestion de la physique dans Unity. Certaines choses m'échappent et je ne vois pas comment faire.
Le but de mon jeu est un FPS avec un joueur qui se déplace dans un monde 3D.
Mon joueur est un CharacterController avec un script FPS de déplacement trouvé ici (https://sharpcoderblog.com/blog/unity-3d-fps-controller). pas de rigidbody.
Mon joueur va utiliser des plateformes verticales et horizontales, en le mettant enfant des plateformes, le joueur suit bien le mouvement même si je me déplace ou saute (c'est parfait).
Mes plateformes sont des cubes avec 1 collider pour tenir dessus, un collider pour détecter la présence du joueur dessus et au-dessus et un script pour mettre le joueur en enfant. (pas de rigidbody)
Par contre j'ai un autre objet (un vaisseau ou avion) dans lequel mon joueur peux aller à l'intérieur et le piloter.
Le joueur peut donner une vitesse au vaisseau et se déplacer à l'intérieur, or même si mon joueur est enfant du vaisseau, il ne suit pas comme pour les ascenseurs.
Je pense que cela vient du fait que le vaisseau à un rigidbody et qu'il est déplacé avec des AddForce.
J'aimerai que le joueur suive le vaisseau même en rotation (si le vaisseau est à l'envers par rapport au monde, le joueur le sera aussi) afin de simuler un champ de gravité dans le vaisseau.
Je n'arrive pas trouver comment gérer ce problème :
Faut-il que j'enlève le Rigidbody du vaisseau ?
Comment gérer par la suite la collision du vaisseau avec d'autres éléments ?
Je dois gérer avec ma propre gestion de la physique ?
Comme je pense qu'il y a plusieurs solutions, je suis un peu perdu.
Merci
Cela fait maintenant quelques soirées que je passe à regarder des vidéos et chercher des scripts qui me permettent de faire ce que je veux mais j'ai toujours des problèmes avec la gestion de la physique dans Unity. Certaines choses m'échappent et je ne vois pas comment faire.
Le but de mon jeu est un FPS avec un joueur qui se déplace dans un monde 3D.
Mon joueur est un CharacterController avec un script FPS de déplacement trouvé ici (https://sharpcoderblog.com/blog/unity-3d-fps-controller). pas de rigidbody.
Mon joueur va utiliser des plateformes verticales et horizontales, en le mettant enfant des plateformes, le joueur suit bien le mouvement même si je me déplace ou saute (c'est parfait).
Mes plateformes sont des cubes avec 1 collider pour tenir dessus, un collider pour détecter la présence du joueur dessus et au-dessus et un script pour mettre le joueur en enfant. (pas de rigidbody)
Par contre j'ai un autre objet (un vaisseau ou avion) dans lequel mon joueur peux aller à l'intérieur et le piloter.
Le joueur peut donner une vitesse au vaisseau et se déplacer à l'intérieur, or même si mon joueur est enfant du vaisseau, il ne suit pas comme pour les ascenseurs.
Je pense que cela vient du fait que le vaisseau à un rigidbody et qu'il est déplacé avec des AddForce.
J'aimerai que le joueur suive le vaisseau même en rotation (si le vaisseau est à l'envers par rapport au monde, le joueur le sera aussi) afin de simuler un champ de gravité dans le vaisseau.
Je n'arrive pas trouver comment gérer ce problème :
Faut-il que j'enlève le Rigidbody du vaisseau ?
Comment gérer par la suite la collision du vaisseau avec d'autres éléments ?
Je dois gérer avec ma propre gestion de la physique ?
Comme je pense qu'il y a plusieurs solutions, je suis un peu perdu.
Merci