Close
    Search Search

    Tutorial: Guía de expertos para la creación de scripts

    Tutorial: Guía de expertos para la creación de scripts

    ¡Bienvenido! Si está leyendo este tutorial, debería haber leído los tutoriales de scripting para principiantes, principiantes, intermedios y avanzados. A estas alturas, deberías tener todas las habilidades para hacer un juego completamente funcional. Este tutorial cubrirá algunos conceptos aleatorios y no fundamentales que puede usar en cualquier momento.


    Contenido

    Garrapata()

    Garrapata() es una función que encuentra la hora Unix. Si no sabe lo que esto significa, es el número de segundos que han transcurrido desde la época de Unix, que es el 1 de enero de 1970.



    Digamos que quería encontrar la cantidad de tiempo que ha pasado desde que se hizo clic en una GUI. Inserte un ScreenGui, un TextButton en ScreenGui y un script local en TextButton.

    local startTime = tick () script.Parent.Activated: Connect (function () local serverTime = tick () - startTime print (serverTime) end)

    Ahora tomaría el tiempo actual de Unix, luego le restaría el tiempo de inicio.


    Interpolación linear

    Esta es una práctica alternativa a la interpolación, que le permite animar suavemente una parte de un punto a otro. Para hacer esto, simplemente puede usar la función Lerp () en el CFrame de la pieza.

    GoalPart local = game.Workspace.Part2 script.Parent.CFrame: Lerp (GoalPart.CFrame, 0.5)

    En la función Lerp (x, y), x es el CFrame en el que desea que termine la parte, y el parámetro y es el decimal o fracción de la ruta por la que desea que viaje la parte. Entonces, por ejemplo, cuando y = 1, la parte se movería hasta el final CFrame. Cuando y = 0, la pieza no se movería en absoluto. Entonces, en este caso, la parte se movería a la mitad de la Parte 2.

    UDim2

    UDim2 es el equivalente en interfaz gráfica de usuario de Vector3. En lugar de manejar un espacio tridimensional, utiliza un espacio bidimensional. En lugar de tomar tres valores, toma cuatro: Escala X, Desplazamiento X, Escala Y y Desplazamiento Y.

    Escalable

    La escala es la parte de toda la pantalla. Entonces, cuando la escala X en el tamaño de la GUI se establece en 1, la GUI ocupa toda la pantalla horizontalmente. Cuando la escala X se establece en 0, la GUI no se puede ver.


    Compensación

    El desplazamiento es el número adicional de píxeles. Entonces, cuando el tamaño se establece en (0,300,0,300), la GUI será de 300 X 300 píxeles. Tenga en cuenta que debe evitar el uso de Offset si es posible porque la GUI se distorsionará dependiendo de la pantalla.

    Se recomienda que cuando trabaje con ScreenGuis, SIEMPRE use Scale en lugar de Offset. Esto se debe a que los diferentes dispositivos tienen diferentes tamaños de pantalla, por lo que las IU se verían diferentes en diferentes pantallas.

    Manipulación de la cámara

    Cambiar la vista de la cámara es útil para varias cosas. Por ejemplo, es posible que desee que la cámara mire una determinada herramienta cuando el jugador está en una tienda en un juego de simulador. Entonces, abra StarterPlayer> StarterPlayerScripts e inserte un script local.


    local Camera = game.Workspace.CurrentCamera local FocusPart = game.Workspace.FocusPart local CameraCFrame = game.Workspace.CameraPart esperar (0.01) Camera.CameraType = Enum.CameraType.Fixed Camera.CFrame = CFrame.new (Vector3.new (CameraCFrame .Position)) Camera.Focus = FocusPart

    En la penúltima línea, CameraType se estableció en fijo, por lo que permanecería en un punto. Entonces, la ubicación sería la posición de CameraPart. Finalmente, establecer el enfoque haría que la cámara mirara a CameraPart.

    UserInputService

    UserInputService es un servicio que se utiliza principalmente para activar comandos cada vez que se presiona una tecla determinada. En este tutorial, aprenderá a hacer que aparezca una GUI de inventario cada vez que se presione la tecla E.

    Inserte un ScreenGui y un script local en StarterGui. Diseñe la GUI para que se adapte mejor a sus necesidades.


    Entrada Comenzó

    InputBegan es un evento que se activa cada vez que un jugador intenta realizar una entrada en el juego. Esto se refiere no solo a escribir una tecla, sino también a hacer clic con el botón izquierdo o derecho. Entonces, en el script local ingrese el siguiente código:

    UserInputService local = juego: GetService ("UserInputService") UserInputService.InputBegan: Connect (function (input, gameProcessedEvent) end

    Ahora, puede ver que hay dos parámetros para el evento InputBegan: input y gameProcessedEvent. La entrada se refiere a la forma en que el jugador ingresó los datos.

    gameProcessedEvent

    gameProcessedEvent es un valor booleano que es verdadero si no hubiera otra razón para la entrada del usuario. Por ejemplo, es probable que no desee que se active este código si el usuario escribe E en el chat. No querrá que el código se active si alguien hace clic en una GUI. En ambas ocasiones, gameProcessedEvent se establecería en true. Por lo tanto, coloque una declaración if que solo se activará si gameProcessedEvent fuera falso.

    UserInputService local = juego: GetService ("UserInputService") UserInputService.InputBegan: Connect (función (input, gameProcessedEvent) si gameProcessedEvent == false luego end end)

    Ahora, todo lo que queda por hacer es verificar si la entrada fue presionando una tecla E. Luego, utilícelo para habilitar la GUI.


    UserInputService local = juego: GetService ("UserInputService") UserInputService.InputBegan: Connect (function (input, gameProcessedEvent) if gameProcessedEvent == false then if input.Keycode == Enum.KeyCode.E then game.StarterGui.ScreenGui.Enabled = true fin fin fin)

    KeyCode se refiere a la tecla que se presionó. Asegúrese de utilizar Enum; los valores de cadena no funcionarán aquí.

    InputEnded

    InputEnded es un evento similar, solo que se activa cuando finaliza la entrada. Por lo tanto, se activa cuando un usuario suelta el botón o la tecla del mouse.

    UserInputService local = juego: GetService ("UserInputService") UserInputService.InputEnded: Connect (function (input, gameProcessedEvent) if gameProcessedEvent == false then if input.Keycode == Enum.KeyCode.E then game.StarterGui.ScreenGui.Enabled = true fin fin fin)

    Las propiedades "habilitadas"

    Las propiedades habilitadas son propiedades booleanas que se establecen en true si el dispositivo del usuario tiene una característica determinada. Aquí están:

    • AcelerometerEnabled: si el dispositivo tiene un acelerómetro
    • GamepadEnabled: si el dispositivo tiene un gamepad
    • GyroscopeEnabled: si el dispositivo tiene un giroscopio
    • KeyboardEnabled: si el dispositivo tiene un teclado
    • MouseEnabled: si el dispositivo tiene un mouse
    • TouchEnabled: si el dispositivo tiene un panel táctil
    • VREnabled: si el usuario está usando un visor de realidad virtual

    Los eventos "Touch"

    Estos eventos se activan cada vez que el usuario realiza un determinado movimiento con el dedo en un dispositivo móvil.

    • TouchEnded: cuando un jugador suelta su dedo
    • TouchLongPress: cuando un jugador mantiene presionada la pantalla
    • TouchMoved: cuando un jugador mueve su dedo
    • TouchPan: cuando un jugador arrastra el dedo
    • TouchPinch: cuando un jugador pellizca dos dedos
    • TouchRotate: cuando un jugador gira sus dedos
    • TouchStarted: cuando un jugador coloca su dedo en una pantalla
    • TouchSwipe: cuando un jugador desliza el dedo
    • TouchTap: cuando un jugador toca con el dedo
    • TouchTapInWorld: cuando un jugador toca el mundo 3-D.

    Herramientas del reproductor

    Es posible que también desee obtener información sobre las herramientas del reproductor. Estas son herramientas que puede ver en la barra de acceso rápido de inventario en la parte inferior de la pantalla.

    Para hacer esto, primero diseñe su herramienta con tantos componentes como desee.

    A continuación, busque la parte principal por la que desea que el jugador sostenga la herramienta y cámbiele el nombre a "Manejar". Tenga en cuenta que DEBE utilizar el nombre exacto; Roblox no aceptará ninguna variación.

    Luego, suelde todas las partes juntas usando restricciones de soldadura. Puede hacer esto resaltando las partes en el Explorador, luego yendo a Modelo> Restricciones> Soldar.

    Inserte una herramienta en el espacio de trabajo y coloque todas las piezas en su interior. Sin embargo, notará que es posible que la pieza no se coloque en su mano de la manera que desea. Por lo tanto, instale un complemento de editor de agarre de herramientas, que puede encontrar en la Biblioteca de Roblox, y úselo para mover y rotar la herramienta tanto como necesite. Si desea que la herramienta se le entregue al jugador al comienzo del juego, colóquela en StarterPack. De lo contrario, colóquelo en ServerStorage.

    MarketPlaceService

    MarketPlaceService es un servicio que se utiliza para manejar pases de juego para obtener detalles adicionales en el juego. Digamos que quería que los usuarios obtuvieran una espada si tienen el gamepass.

    Creando la herramienta

    Cree la herramienta como lo hizo en la sección anterior y colóquela en ServerStorage. Puedes encontrar un modelo de espada en la Caja de herramientas.

    Creando el Gamepass

    Si aún no lo ha hecho, publique su juego en Roblox. No es necesario que sea público, pero puede hacerlo si lo desea. Luego, vaya a la página del juego en el sitio web, luego vaya a la pestaña Tienda debajo de la descripción y agregue un nuevo gamepass. Ponle un nombre e inserta una imagen de 150 x 150 píxeles.

    Si desea cambiar el precio, haga clic en el icono de rueda dentada y seleccione "Configurar". Luego, puede cambiar el precio. Tenga en cuenta que para los usuarios no premium, Roblox tomará el 90% de Robux obtenido de los gamepasses. Para los usuarios premium, se llevarán el 30%.

    PromptGamePassPurchase ()

    PromtGamePassPurchase () es una función que le pregunta al jugador si quiere comprar un gamepass. Hay dos parámetros: el jugador y el AssetId del gamepass.

    local MarketplaceService = juego: GetService ("MarketplaceService") local plr = game.Players.LocalPlayer MarketplaceService: PromptGamePassPurchase (plr, 9382042)

    Por supuesto, deberá reemplazar el número con el ID del gamepass.

    PromptGamePassPurchaseFinished

    Este es un evento que se activa cuando el jugador compra el gamepass o cierra la ventana emergente. Tiene tres parámetros: el jugador, el ID de gamepass y si el jugador compró o no el gamepass.

    MarketplaceService local = juego: GetService ("MarketplaceService") MarketplaceService.PromptGamePassPurchasedFinished: Connect (function (plr, ID, wasPurchased) if wasPurchased == true, then if ID == 3920472 then local Sword = game.ServerStorage.Sword: Clone () Sword .Parent = plr.Mochila final final final)

    La primera declaración if comprueba si el jugador compró o no el gamepass. El segundo comprueba si el gamepass que compró el jugador era el que pretendía darle una espada al jugador.

    Animación

    Una animación es una forma de hacer que un modelo se mueva suavemente para hacer un baile, una ola o lo que sea.

    Creando la Animación

    Para hacer esto, vaya a la pestaña Complementos y seleccione "Build Rig". Dependiendo del tipo de cuerpo que desee, para animar, seleccione un equipo que funcione mejor para su animación. Un modelo R15 es un modelo con 15 partes del cuerpo y un modelo R6 es un modelo que tiene 6 partes. Elija cuántas articulaciones le gustaría usar. La plataforma debería aparecer en su espacio de trabajo.

    Luego, abra el editor de animación y use la herramienta Seleccionar para seleccionar el equipo. Con el editor de animación, puede rotar la plataforma en ciertos fotogramas clave como desee.

    Cuando haya terminado, haga clic en el nombre de la animación y haga clic en "Exportar". Pareado a la plataforma en la ventana del explorador, debería ver un objeto con el nombre de la animación y un icono cuadrado azul. Haz clic derecho y elige "Exportar a Roblox". Será un activo en tu inventario de jugadores. Tenga en cuenta que las animaciones R6 no funcionarán con los modelos R16 y viceversa.

    Luego, copie y pegue el AssetId.

    Guion de la animación

    Ahora es el momento de animar al personaje. Inserte un guión en el personaje que desea animar, luego un objeto de animación en el guión. Ingrese el AssetId de la animación en la propiedad AnimationId del objeto de animación. Ingrese lo siguiente en el script:

    animación local = script: WaitForChild ("Animación") humanoide local = script.Parent: WaitForChild ("Humanoid") local LoadedAnimation = humanoide: LoadAnimation (animación) LoadedAnimation: Play ()

    Una vez más, WaitForChild cede hasta que el objeto existe y se ha cargado. LoadAnimation prepara la animación que se va a reproducir. Finalmente, Play () hará que se reproduzca la animación.

    TeleportService

    A veces encuentras que en proyectos más grandes, el mundo simplemente se vuelve un poco demasiado grande por su propio bien. Entonces, puedes tener varios lugares separados en el juego. Si tiene dificultades para comprender lo que esto significa, es como los servidores de Pro Towers en Tower of Hell. Sigue siendo el mismo juego, pero está en un lugar diferente.

    Para hacer esto, asegúrese de que su juego esté publicado. Puede ser privado.

    Luego, vaya a la pestaña Ver y abra la ventana del Explorador de juegos. Luego, coloca el cursor sobre "Lugares" y haz clic en el signo más para crear un lugar. Haga clic con el botón derecho en la pestaña de lugar en el Explorador de juegos para copiar el PlaceId.

    Hagamos una plataforma de teletransportación que transporte personas entre lugares. Inserte una parte en el espacio de trabajo y un guión adentro.

    local TeleportService = juego: GetService ("TeleportService") local debounce = false script.Parent.Touched: Connect (función (presionar) si debounce == false entonces debounce = true wait (2) end end)

    Hasta ahora, todo se explica por sí mismo. Asegúrese de utilizar un antirrebote. De lo contrario, el servidor del usuario dejará de responder.

    Entonces, configure una variable local para obtener el objeto del jugador. Luego, use la función Teleport () para insertar el script. El primer parámetro es PlaceId y el segundo parámetro es el objeto del reproductor.

    local TeleportService = juego: GetService ("TeleportService") local debounce = false script.Parent.Touched: Connect (function (hit) if debounce == false then debounce = true local plr = game.Players: GetPlayerFromCharacter (hit.Parent) TeleportService : Teleport (29403734, plr) end end)

    Tenga en cuenta que esto no funcionará dentro de Roblox Studio. Si desea probar esto, vaya a un servidor en vivo.

    Regiones

    Una región es un espacio tridimensional en el mundo de Roblox. Intentemos encontrar piezas en un espacio específico. Cree una pieza y ajústela para que cubra toda la región. Luego, intente encontrar las coordenadas de la esquina inferior izquierda de la pieza. Haz lo mismo con la esquina superior derecha. En otras palabras, encuentre los valores mínimos y máximos de X, Y y Z de la pieza. Ahora puede eliminar una pieza. Inserte este script en el espacio de trabajo:

    local reg = Region3.new (Vector3.new (minX, minY, minZ), Vector3.new (maxX, maxY, MaxZ))

    Reemplace los seis marcadores de posición con coordenadas. La variable reg creará una nueva región con esas coordenadas.

    Temas

    ¿Qué es un hilo?

    Un hilo es una forma de que un script ejecute más de un fragmento de código a la vez. Entonces, si quisiera hacer que dos bucles while se ejecuten al mismo tiempo con diferentes intervalos, solo dispararía el bucle superior.

    mientras es verdadero imprimir (1) esperar (2) finalizar mientras que verdadero hacer - No funcionará. imprimir (2) esperar (2) finalizar

    Esto se debe a que el código se atascará para siempre en el primer ciclo while.

    Un hilo permitirá que el mismo script los ejecute a la vez.

    Función Spawn ()

    La función Spawn te permite crear un nuevo hilo.

    spawn (función () mientras es verdadero imprime (1) espera (1) finaliza) mientras que es verdadero imprime (2) espera (2) finaliza

    Aquí, el código disparará ambos bucles while al mismo tiempo.

    Función Delay ()

    La función Delay funciona de la misma manera que Spawn, solo que creará un retraso antes de crear el hilo.

    delay (5, function () while true do print (1) wait (1) end end) while true do print (2) wait (2) end

    Aquí, el script disparará el segundo bucle while, esperará 5 segundos y luego disparará el primer bucle while.

    Corutinas

    Las corrutinas son básicamente formas de crear nuevos hilos, solo que con más funciones.

    local ctine = coroutine.create (function () while true do print (1) end end)

    Tenga en cuenta que el hilo no se ejecutará sin una función de reanudación después.

    coroutine.resume (ctine)

    Puede utilizar la función de rendimiento para pausar la corrutina.

    coroutine.yield (ctine) wait (1) coroutine.resume (ctine)

    Aquí, el script detendrá la corrutina y luego la reanudará en 1 segundo.

    Añade un comentario de Tutorial: Guía de expertos para la creación de scripts
    ¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.