Por favor necesito ayuda, soy un poco torpe (y nuevo) programando y he hecho un script para subir y bajar de un coche (u otro vehículo), y no va, pero no se que falla.¿ alguien podría decírmelo por favor?Es el siguiente (está en js) :var alladopuerta : boolean = false;
var conduciendo : boolean = false;
var persona : Transform;
var coche : Transform;
var puerta : Transform;
var puntosalida : Transform;
var camaracoche : Camera;
var camarapersona : Camera;
function Entrar()
{
if(alladopuerta){
GetComponent.<GUIText>().text = "pulsa E para entrar";
}
}
function OnTriggerEnter(Player : Collider)
{
Debug.log("Trigger Enter");
alladopuerta = true;
}
function OnTriggerExit(Player : Collider)
{
Debug.log("Trigger Exit");
alladopuerta = false;
}
function Update()
{
if(Input.GetbuttonDown("Use") && alladopuerta) {
conduciendo = true;
}
if(conduciendo){
persona.GameObject.SetActive(false);
persona.GameObject.SetActive = false;
// parent player to Exit Point
persona.parent = puntosalida.transform;
persona.transform.localPosition = Vector3(-1.5,0,0);
// parent PlayerParent to car
puntosalida.parent = coche.transform;
puntosalida.transform.localPosition = Vector3(-0.3,1.5,-0.65); //Driverside exit point, adjust accordingly per vehicle.
// GameObject.Find("VehicleObjectName").GetComponent("DrivingScriptHere").enabled=true;
GameObject.Find("Car").GetComponent("CarController").enabled=true;
GameObject.Find("Car").GetComponent("CarUserControl").enabled=true; //Enables the script component to operate Vehicle.
camarapersona.enabled = false; //Disables the playerCamera
camaracoche.enabled = true; //Enables the carCamera
}else{
// make character visible again
persona.GameObject.SetActive(true);
persona.GameObject.SetActive = true;
// unparent player from everything
persona.transform.parent = null;
// exitPoint.parent = doorTriggerLeft.transform;
// parent Exit Point to car gameobject
puntosalida.parent = coche.transform;
// GameObject.Find("VehicleObjectName").GetComponent("DrivingScriptHere").enabled=false;
GameObject.Find("Car").GetComponent("CarController").enabled=false; //Disables the script component to park Vehicle.
GameObject.Find("Car").GetComponent("CarUserControl").enabled=false;
camarapersona.enabled = true; //re-enables player camera
camaracoche.enabled = false; //disables car camera
}
if(Input.GetbuttonDown("Use") && conduciendo) {
conduciendo = false; }
} GRACIAS por adelantado, un saludo
EntrarVehiculos.js
Pareces estar peleado con el manual de Unity
He cambiado eso pero sigue sin ir
[quote author=jorgebes" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="22232" data-ipsquote-contentcommentid="112031 date=1442748582]He cambiado eso pero sigue sin ir [/quote]Si tienes que cambiar un montón de cosas. Lo que te dice @Oak Human Flesh es que con la cónsola del Debug depures donde tienes los errores y lo comentes. No que digas que no funciona y ya está. Pero si te quieren ayudar!
Cita de: jorgebes date=1442748582" data-ipsquote="">He cambiado eso pero sigue sin ir /quote]Entonces no comprendes lo que te explique, pues es simplemente que aprendas a usar la consola de errores de Unity y el manual de Unity como unas potentes herramientas, luego también puedes poner cada error para solucionarlo uno a uno
Título: Fallo con script para subir y bajar coche (u otro vehículo)
Publicado por: jorgebes en Septiembre 21, 2015, 04:18:29 PM
Vale gracias que no sabia depurar
[quote author=jorgebes" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="22232" data-ipsquote-contentcommentid="112312">Vale gracias que no sabia depurar [/quote]La depuración del código es un tema muy importante, saber como hacerlo puede ayudar a sacar muchos proyectos o soluciones adelante. Aqui otra línea erroea:persona.GameObject.SetActive (true);Es así:persona.gameObject.SetActive (true);Esta es la explicación, al referirse al GameObject que posee el componente se debe acceder con la palabra clave gameObject. Todos los componentes pertenecen a un gameObject.En este caso persona es una variable que es usada para almacenar un componente tipo Transform. Esta variable supongo es asignada en el inspector de Unity.Para el caso de clase Transform el gameObject es un miembro heredado.Ref:
Título: Fallo con script para subir y bajar coche (u otro vehículo)
Publicado por: jorgebes en Septiembre 22, 2015, 09:58:36 PM
Ya va muchas gracias (con coches aparcados no va, pero me las apañare) llevaba un tiempo estancado ahí
Pero, y porqué no cuentas como lo has solventado?
Cambié lo de los gameobject y me di cuenta que el fallo era que estaba mal escrito la parte de desactivar el personaje y activar la cámara del coche (pero el script de conducir no se activa, tiene que estar siempre activo, por eso los aparcados no van)
Aquí está terminado y probado y va con todo tipo de coches,OJO, que si usais otro script de conducir tendréis que cambiarlo en las partes que se indica, gracias por la ayuda.var alladopuerta : boolean = false;
var conduciendo : boolean = false;
var persona : Transform; //personaje
var coche : Transform; //un empty con los scripts de conducir y el modelo del coche dentro
var puerta : Transform; //cubo modo trigger
var puntosalida : Transform; //empty
var camaracoche : Camera;
var camarapersona : Camera;
function Start(){
coche.transform.GetComponent("CarController").enabled=false; //Desactiva el script de conducir.
coche.transform.GetComponent("CarUserControl").enabled=false;
camaracoche.enabled = false; //descativa la camara del coche
}
function Entrar()
{
if(alladopuerta){
GetComponent.<GUIText>().text = "pulsa E para entrar";
}
}
function OnTriggerEnter(Player : Collider)
{
Debug.Log("Trigger Enter");
alladopuerta = true;
}
function OnTriggerExit(Player : Collider)
{
Debug.Log("Trigger Exit");
alladopuerta = false;
}
function Update()
{
if(alladopuerta){
GetComponent.<GUIText>().text = "pulsa E para entrar";
if(Input.GetButtonDown("Use")) {
conduciendo = true;
alladopuerta= false;
}}
if(conduciendo){
persona.gameObject.SetActive(false);
// parent player to Exit Point
persona.parent = puntosalida.transform;
persona.transform.localPosition = Vector3(-1.5,0,0);
// parent PlayerParent to car
puntosalida.parent = coche.transform;
puntosalida.transform.localPosition = Vector3(-0.3,1.5,-0.65);
// coche.transform.GetComponent("scriptconducir").enabled=true;
coche.transform.GetComponent("CarController").enabled=true;
coche.transform.GetComponent("CarUserControl").enabled=true;
camaracoche.enabled = true; //Enables the carCamera
}else if(Input.GetKeyDown("e")) {
persona.gameObject.SetActive(true);
persona.GameObject.SetActive = true;
persona.transform.parent = null; puntosalida.parent = coche.transform;
coche.transform.GetComponent("CarController").enabled=false;
coche.transform.GetComponent("CarUserControl").enabled=false;
camarapersona.enabled = true;
camaracoche.enabled = false;
}
if(Input.GetKeyDown("r")) {
conduciendo = false;
persona.gameObject.SetActive(true);
persona.transform.parent = null;
puntosalida.parent = puerta.transform;coche.transform.GetComponent("CarController").enabled=false;
coche.transform.GetComponent("CarUserControl").enabled=false;
camarapersona.enabled = true;
camaracoche.enabled = false;
}
}
EntrarVehiculos.js