Je débutes sur Unity, et j'essaye de créer un Escape Game. Actuellement j'ai créé ma scène avec divers objets ainsi que le personnage que je peux contrôler. J'ai créer un raycast afin d'intéragir avec les objets de la scène. Lorsqu'un gameobject avec un tag "editable" est visé, alors je veux éxecuter la méthode Action() se trouvant dans le script du gameObject en question.
Chaque objet de la scène étant éditable c'est à dire que l'on peut intéragir avec possède un script avec des méthodes différentes. Mais dans chaque Script une méthode se nomme Action() et qui doit s'éxecuter à chaque fois que l'utilisateur vise l'objet et appuie sur E.
Les scripts ont des noms différents, ducoup dans mon script MvCamera(gestion de la caméra + création du raycast) je n'arrive pas à faire appelle) à la méthode Action().
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CameraMv : MonoBehaviour
{
public Camera camera;
public float sensi = 1;
Vector3 rotation = new Vector3(0,0,0);
public GameObject perso;
public Text legendTxt;
void Start()
{
}
// Update is called once per frame
void Update()
{
//float xM = Input.GetAxis("Mouse X");
float yM = Input.GetAxis("Mouse Y");
rotation.x -= yM * sensi;
rotation.y = perso.transform.eulerAngles.y;
transform.eulerAngles = rotation;
RaycastHit hit;
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
//Vector3 forward = transform.TransformDirection(Vector3.forward);
//Debug.DrawRay(transform.position, forward, Color.green);
if (Physics.Raycast(ray, out hit,4f)) {
Transform objectHit = hit.transform;
//GameObject objetTouche = hit.transform.gameObject;
if(hit.transform.tag == "Editable"){
legendTxt.text = "Press E !";
//hit.Action();
Debug.Log(objectHit.name);
if(Input.GetKeyDown(KeyCode.E)){
objectHit.gameObject.Action();
}
}
else{
legendTxt.text = " ";
}
}
}
}
Merci d'avance pour vos réponses.