[DB-AL] Problème de déplacement avec gravité

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
Scurreo
Messages : 21
Inscription : 01 Déc 2017 18:14

[DB-AL] Problème de déplacement avec gravité

Message par Scurreo » 08 Déc 2017 18:15

Bonjour,

Je suis sur le développement d'un petit jeu afin de m'entraîner mais je bloque depuis une semaine sur un problème qui est en rapport avec mon ennemi. Il faudrait qu'il se déplace comme mon First Person Controller c'est à dire marche normalement, gravité avec le rigidbody etc. Mais rien de tout ça soit il tombe soit son mesh collider tombe de lui même lorsque je le met en convex.

J'ai appliqué deux script pour mon ennemi:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chase : MonoBehaviour
{
    public Transform player;
    static Animator anim;

	// Use this for initialization
	void Start ()
    {
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update ()
    {
        AudioSource audio = GetComponent<AudioSource>();
        Vector3 direction = player.position - this.transform.position;
        float angle = Vector3.Angle(direction, this.transform.forward);
		if(Vector3.Distance(player.position, this.transform.position) < 15 && angle < 90)
        {
            direction.y = 0;

            this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f);

            anim.SetBool("isIdle", false);
            if(direction.magnitude > 5)
            {
                if (!audio.isPlaying) //Si le son n'est pas joué
                {
                    audio.Play();
                }

                this.transform.Translate(0, 0, 0.5f);
                anim.SetBool("isRun", true);
                anim.SetBool("isAttacking", false);
            }
            else
            {
                anim.SetBool("isAttacking", true);
                anim.SetBool("isRun", false);
            }
        }
        else
        {
            if (audio.isPlaying)
                audio.Stop();

            anim.SetBool("isIdle", true);
            anim.SetBool("isRun", false);
            anim.SetBool("isAttacking", false);
        }
	}
}

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour
{
    public Transform target;
    public Transform myTransform;

	// Use this for initialization
	void Start ()
    {

	}
	
	// Update is called once per frame
	void Update ()
    {
        transform.LookAt(target);
        transform.Translate(Vector3.forward * 2 * Time.deltaTime);
	}
}
Pour informations j'utilise deux assets:

https://www.assetstore.unity3d.com/en/#!/content/35635*
https://www.assetstore.unity3d.com/en/#!/content/69220

Mon ennemi utilise 3 animations, la marche (Walk), la course (Run) et l'Attack

Si une personne peut m'aider à ça c'est super car là ça bloque..

Merci d'avance
 ! Message de : boubouk50
Quel rapport avec les Shaders??? Merci de faire attention où tu postes tes messages. SUJET DEPLACE

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Problème de déplacement avec gravité

Message par Max » 09 Déc 2017 12:38

Bonjour,
Scurreo a écrit :
08 Déc 2017 18:15
Il faudrait qu'il se déplace comme mon First Person Controller c'est à dire marche normalement, gravité avec le rigidbody etc. Mais rien de tout ça soit il tombe soit son mesh collider tombe de lui même lorsque je le met en convex.
Cela veut dire quoi tomber ?
Il passe à travers le sol (pas de collider sur ta scène) ? Il tombe sur le coté, genre bidibulle ?
As tu regardé comment était construit les Controllers fournis dans les StandardAssets ? C'est une base solide d'inspiration. Déjà tu verras qu'il n'y a pas de MeshCollider. Globalement, les MeshColliders sont à bannir hormis sur des éléments statiques. Dans le cas des controlers pour des personnages, on utilise généralement les CapsuleCollider.
Quelle sont les interactions prévues entre ton player et tes monstres mal fagotés ? Il sont destiné à se battre (coups, dégâts, etc...) ?

Sinon, pourquoi deux scripts ?

J'ai l'impression que tu y vas à tâtons. Tu abordes déjà des mécaniques de jeux qui ne sont pas si simple à mettre en oeuvre.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Scurreo
Messages : 21
Inscription : 01 Déc 2017 18:14

Re: [DB-AL] Problème de déplacement avec gravité

Message par Scurreo » 11 Déc 2017 11:37

Bonjour,

Je ne savais pas que les MeshColliders était à bannir dans des éléments qui bouge, bon à savoir. Mon ennemi à trois mouvements, marcher, courir et attaquer aucun dégâts rien de tout ça. Mon problème est qu'avec un Capsule Collider il fait un peut n'importe quoi sur le terrain..
Et oui il tombe à côté mon MeshCollider

Pour les 2 scripts c'est que j'ai préféré faire ainsi pour pas me mélanger j'y vais doucement

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Problème de déplacement avec gravité

Message par Max » 11 Déc 2017 19:31

Scurreo a écrit :
11 Déc 2017 11:37
Mon ennemi à trois mouvements, marcher, courir et attaquer aucun dégâts rien de tout ça.
dans ce cas, attacher à ton popol un rigidbody, dont la gestion n'est jamais simple, n'est peut-être pas nécessaire.
Scurreo a écrit :
11 Déc 2017 11:37
Mon problème est qu'avec un Capsule Collider il fait un peut n'importe quoi sur le terrain..
un controller basé sur les rigidbody demande un codage spécifique lié à la physique, qui va bien au delà de ce que tu as pu écrire au dessus. Là encore, regarde du coté de se qui existe pour t'en inspirer (voir aussi certains tuto).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « (C#) CSharp »