[RESOLU]HELP! PB déplacement d'un objet

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Arcar
Messages : 5
Inscription : 23 Avr 2020 14:52

[RESOLU]HELP! PB déplacement d'un objet

Message par Arcar » 23 Avr 2020 15:18

Bonjour à tous,
Tout d'abord, merci de votre indulgence face à mon ignorance !!! :-D
Je veux qu'un objet ( un cube) se déplace sur l'axe x par exemple quand mon personnage "le pousse" pendant plus d'une seconde et qu'il n'est pas en collision avec un autre cube ou mur.
Je pensais y être arrivé mais régulièrement et sans comprendre pourquoi, le cube se déplace de 2 fois la valeur voulue...

Voici le script du cube :

Code : Tout sélectionner

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

public class BoxScript : MonoBehaviour
{
	private Vector3 startPos;
	private Vector3 endPosG;
	private Vector3 endPosD;
	private float distance = 2f;
	private float t = 1f;
	  
	BoxDroite boxdroite; 
	BoxGauche boxgauche;
		
    // Start is called before the first frame update
    void Start()
    {
		boxdroite = gameObject.GetComponentInChildren<BoxDroite> ();
		boxgauche = gameObject.GetComponentInChildren<BoxGauche> ();	   
    }

	void Awake ()
	{
		
	}

    // Update is called once per frame
    void Update()
    {
		startPos = transform.position;
		endPosG = transform.position + Vector3.left * distance;
		endPosD = transform.position + Vector3.right * distance;
		
	if(boxdroite.playerPushLeft && !boxgauche.isBlockedByBox && !boxgauche.isBlockedByWall)
	{
		transform.position = Vector3.Lerp(startPos, endPosG, t );
		Debug.Log("move to left");
	}

	if(boxgauche.playerPushRight && !boxdroite.isBlockedByBox && !boxdroite.isBlockedByWall)
	{
		transform.position = Vector3.Lerp(startPos, endPosD, t );
		Debug.Log("move to right");
	}	
	
    }
	
}

Et voici le script du collider Gauche du cube :

Code : Tout sélectionner

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

public class BoxGauche : MonoBehaviour
{
	public bool isBlockedByWall;
	public bool isBlockedByBox;
	public bool playerPushRight;
	
	float  t = 0;
	
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
	
	void OnTriggerEnter(Collider col) 
	{ 
		if (col.GetComponent<Collider>().tag == "ColliderPlayer")
		{
			t = 0;
			playerPushRight = false;
		}
		
		if (col.GetComponent<Collider>().tag == "PushableD")
		{
			isBlockedByBox = true;
			
		}
		
		if (col.GetComponent<Collider>().tag == "Wall")
		{
			isBlockedByWall = true;
			
		}
		
	}
	
	void OnTriggerStay(Collider col) 
	{ 
		t += Time.deltaTime;
	 
		if (col.GetComponent<Collider>().tag == "ColliderPlayer" && Input.GetAxisRaw ("Horizontal") > 0 && t > 1f)
		{
			playerPushRight = true;			
		}
	
	}
	
	void OnTriggerExit(Collider col) 
	{ 
		if (col.GetComponent<Collider>().tag == "ColliderPlayer"&& Input.GetAxisRaw ("Horizontal") > 0 )
		{
			playerPushRight = false;	
		}
		
		if (col.GetComponent<Collider>().tag == "PushableD")
		{
			isBlockedByBox = false;
			
		}
		
		if (col.GetComponent<Collider>().tag == "Wall")
		{
			isBlockedByWall = false;
			
		}
		
	}
}

J'espère que tout ça est clair, c'est la première fois que je demande de l'aide....
Merci par avance!!!
Dernière édition par Arcar le 23 Avr 2020 16:46, édité 1 fois.

Arcar
Messages : 5
Inscription : 23 Avr 2020 14:52

Re: HELP! PB déplacement d'un objet

Message par Arcar » 23 Avr 2020 16:04

C'est peut être important pour la compréhension et j'ai oublié de le préciser mais le cube est enveloppé de 4 colliders (en haut, en bas, a gauche et a droite) qui sont là pour vérifier que les côtés opposés ne sont pas en collision...!!!
Encore une fois, j'espère être clair!!!

Arcar
Messages : 5
Inscription : 23 Avr 2020 14:52

Re: HELP! PB déplacement d'un objet

Message par Arcar » 23 Avr 2020 16:45

Vous allez me prendre pour un fou, mais après plusieurs jours de galère, il suffit que je demande de l'aide pour trouver!!!!!!!
J'ai déclaré la bool fausse directement dans le script principal du cube !!!

Code : Tout sélectionner

void Update()
    {
		startPos = transform.position;
		endPosG = transform.position + Vector3.left * distance;
		endPosD = transform.position + Vector3.right * distance;
		
	if(boxdroite.playerPushLeft && !boxgauche.isBlockedByBox && !boxgauche.isBlockedByWall)
	{
		transform.position = Vector3.Lerp(startPos, endPosG, t );
		Debug.Log("move to left");
		boxdroite.playerPushLeft = false;
	
	}

	if(boxgauche.playerPushRight && !boxdroite.isBlockedByBox && !boxdroite.isBlockedByWall)
	{
		transform.position = Vector3.Lerp(startPos, endPosD, t );
		Debug.Log("move to right");
		boxgauche.playerPushRight = false;
	}	
	
    }


Merci quand même !

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

Re: [RESOLU]HELP! PB déplacement d'un objet

Message par boubouk50 » 23 Avr 2020 17:19

Nous sommes tous très heureux d'avoir pu te servir de canard en plastique (voir Méthode du canard en plastique)

N'hésite pas à continuer à trouver toi même les solutions, ça nous fait moins de travail :lol:
"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

EmileF
Messages : 676
Inscription : 18 Mars 2017 19:39

Re: [RESOLU]HELP! PB déplacement d'un objet

Message par EmileF » 23 Avr 2020 18:19

Ha oui, je ne connaissais pas cette expression et pourtant je devrais avoir tout un poulailler. Je ne sais pas si ça se dit pour des canards :ghee:
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Arcar
Messages : 5
Inscription : 23 Avr 2020 14:52

Re: [RESOLU]HELP! PB déplacement d'un objet

Message par Arcar » 23 Avr 2020 18:55

Tu ne m'as pas aidé, mais tu viens de m'apprendre cette histoire de canard en plastique :lol: :lol: :lol:
Et je suis sûr que ce moment viendra....!!!
Merci!

Répondre

Revenir vers « Scripting »