Buenas comunidad :D
Hoy les vengo con un tutorial de como crear puertas automáticas(que se abran al acercarse)
Ya muchos me han preguntado como hacerlo, es por ello que vengo con este tutorial.
Bueno, comencemos:
Bueno, para esto hay 2 formas de hacerlo, con un marker o utilizando las coordenadas del objeto. Esta vez lo haremos con un marker. (Es casi lo mismo)
Primero para crear un marcador(marker) debemos utilizar la siguiente sintaxis:
variable = createMarker ( x,y,z "type", size, r, g, b, alpha )
Ya teniendo eso claro podemos seguir con nuestro script.
Bueno, creamos nuestro marcador con las coordenadas que queremos.
Ejemplo:
p1mkr = createMarker ( 3479.1000976563,-2013.8000488281,38.299999237061, "cylinder", 1.7, 0, 0, 0,0 )
Ahora solo necesitamos la puerta que queremos mover. para ello utilizamos lo siguiente:
Sintaxis
variable = createObject ( x,y,z,rx,ry,rz)
Crear nuestra puerta:
puerta1 = createObject ( 2951, 3480.3999023438,-2013.8000488281,38.040000915527, 0, 90, 90)
Ya teniendo nuestra puerta y nuestro marcador podemos proseguir a utilizar código para que esta se mueva.
Para ello utilizaremos 2 funciones, una que haga que se mueva al acercarse y otra que se devuelva a su posición inicial. Estas funciones o eventos mejor dicho son: "onColShapeHit" y "onColShapeLeave".
Pero antes de esto, primero necesitamos sacar las coordenadas de nuestra puerta. Es decir. Llevar las coordenadas a una variable. ¿Para qué? Pues simple, con ellas obtendremos también la posición del jugador que se acerque a ella, y así poder accionar el evento.
Entonces utilizaremos lo siguiente:
x,y,z = getElementPosition(p1mkr) -- Obtenemos coordenadas de nuestro marcador
Zona = createColCircle(x,y,4,3) -- Creamos un radio alrededor de nuestro marcador
Ahora solo nos falta poder accionar los eventos.
-- MOVER NUESTRA PUERTA
addEventHandler("onColShapeHit",Zona,function()
moveObject(puerta1,3000,3480.5,-2011.5999755859,38) -- Establecemos nuevas coordenadas
end)
-- HACER QUE VUELVA A LA POSICION INICIAL
addEventHandler("onColShapeLeave",Zona,function()
moveObject(puerta1,3000,2951, 3480.3999023438,-2013.8000488281,38.040000915527) -- Establecemos coordenandas iniciales
end)
Bueno el código completo quedaría más o menos así:
addEventHandler("onResourceStart",getRootElement(),function()
p1mkr = createMarker ( 3479.1000976563,-2013.8000488281,38.299999237061, "cylinder", 1.7, 0, 0, 0,0 )
puerta1 = createObject ( 2951, 3480.3999023438,-2013.8000488281,38.040000915527, 0, 90, 90)
end)
x,y,z = getElementPosition(p1mkr)
Zona = createColCircle(x,y,4,3)
addEventHandler("onColShapeHit",Zona,function ()
moveObject(puerta1,3000,3480.5,-2011.5999755859,38)
end)
addEventHandler("onColShapeLeave",Zona,function()
moveObject(puerta1,3000,3480.3999023438,-2013.8000488281,38.040000915527)
end)
Cabe destacar que el archivo debe ser colocado en nuestro archivo meta.xml como tipo "server".
Ejemplo: