jueves, 10 de febrero de 2022

PINBALL.....rb.AddForce(10.3f, 0f, 10.3f, ForceMode.Impulse);


 

PINBALL.

Estoy haciendo ahora un videojuego para desconectar con el del hombre lobo o quizás complementarlo en alguna escena, pero mas adelante lo continuare a la vez que este del pinball.


Es un juego sencillisimo de varios niveles que se consiguen sumando puntuaciones.

Lo mas dificultoso a sido conseguir el rebote de la bola cuando choca con los elementos del videojuego, el rebote que la bola tenga vida, inercias y fuerzas que la empujan , y me vuelto medio loco buscando scripts en C # para conseguirlo, estoy muy orgulloso de haberlo conseguido y de mostrarlo aquí para el que quiera hacer un pinball o algo por el estilo, partiendo de los dos scripts de C# que e sacado del….

https://docs.unity3d.com/es/2018.4/ScriptReference/Rigidbody.AddForce.html


los scripts de la parte original que los copie me dieron la idea de que se ejerzan esas fuerzas pero no constantemente sino al tocar la bola elementos con el tag de “MATA”..

Es curioso como voy solucionando muchos temas con el tema de poner un tag personal a los gameobjects, sonidos, movimientos, suma de puntuaciones,cambiar de escenas o niveles, y ahora aplicar fuerzas de inercia……..




using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class ExampleClass : MonoBehaviour

{

// public float thrust;

public Rigidbody rb;


void Start()

{

rb = GetComponent<Rigidbody>();

}


void OnTriggerEnter(Collider other)

{

if (other.gameObject.CompareTag("MATA"))

{


rb.AddForce(10.3f, 0f, 10.3f, ForceMode.Impulse);



}

}



}



-------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------- 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class EXAMPLEREBOTE2PERFECTO : MonoBehaviour

{


// public float thrust;

public Rigidbody rb;


void Start()

{

rb = GetComponent<Rigidbody>();

}


void OnTriggerEnter(Collider other)

{

if (other.gameObject.CompareTag("MATA"))

{


rb.AddForce(0.000003f, 0f, 0.000003f, ForceMode.Impulse);



}

}



}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ORIGINAL-------

-------------------------------------------------------------------------------------------------

System.Collections;

using System.Collections.Generic;

using UnityEngine;
public class ExampleClass : MonoBehaviour
{
    public float thrust;
    public Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        rb.AddForce(transform.forward * thrust);
    }
}

----------------------------------------------------------ORIGINAL--------------


System.Collections;

using System.Collections.Generic;

using UnityEngine;
public class ExampleClass : MonoBehaviour
{
    public float thrust;
    public Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        rb.AddForce(0, 0, thrust, ForceMode.Impulse);
    }
}
 
 
 
 



 
 
 
 

domingo, 30 de enero de 2022

Como hacer un menú de inicio con Unity sencillisimo;

 


Volviendo a Unity….

Un pequeño repaso, para ampliar mi blog con capturas de pantalla…

En mi videojuego ...The wolf man of the underground iii demo 6, voy a explicar paso a paso lo desarrollado y conseguido y los problemas que me ido topando e intentando resolver.

Estoy haciendo un menú de inicio del videojuego de una forma particular, en la captura de pantalla se ven los elementos del videojuego que intervienen.

Build Settings, donde hay cuatro escenas numeradas desde 0,1,2,3 y con las que vamos cambiando las escenas desde la 0, que es la del menú muy simple que e ideado yo y que voy a explicar a continuación.

Un cube de color negro con el rotulo START, con forma de ficha de domino.

Otro cubo con forma de cuadro con la textura de la ilustración de la cara del hombre lobo.

Cube (2)TRASPARENTE…..otro cubo con forma también de ficha de domino pero que le quitado el (mesh).

Y claro tenemos la cámara que enfoca desde arriba del todo.

Y dos scripts uno que provoca que al colisionar el elemento cube de color negro con el rotulo START, con el elemento Cube (2)TRASPARENTE…..otro cubo con forma también de ficha de domino pero que le quitado el (mesh).

Se cambia a la escena numero 1 donde empiezas a jugar,

Y otro script que de forma secundaria provoca la acción de gravedad del gameobject con el rotulo STARD este que tiene un tag if (collision.gameObject.tag == "auno") {
con el nombre “auno”, hace el cambio de la escena.

A continuación las capturas de pantalla unas 12 donde intento explicar el tema y las ultimas imágenes muy importantes que indican como se hace un tag para que funcione el script, el tag solo es un nombre inventado para el elemento del videojuego que interviene en la acción del cambio de escena.

También pongo los scripts de C# siempre, ya que java script no se utiliza ahora mismo en Unity


 










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

public class STARTTAG : MonoBehaviour {

        void Start () {

        }

        //void OnCollisionEnter (){

        void OnCollisionEnter (Collision collision)
        {
            //if (collision.gameObject.tag == "maloazul (4)") {
            //Destroy (gameObject, 0.0f); 

            if (collision.gameObject.tag == "auno") {
                //Destroy (gameObject, 2.0f); 

                //    transform.position = new Vector3 (198.301f, 20.316f, 136.023f);/////////nuebo mio
                //transform.Translate (new Vector3 (198 * Time.deltaTime, 20, 136.2f), Space.Self);/////////////IMBENTADO

                //Application.LoadLevel (1);////ORIGINALLLLLLLLLLLL
                Application.LoadLevel (1);

            }
        }
    }


--------------------------------------------------------------------

---------------------------------------------------------------------

aqui solo proboca de forma secundaria la gravedad para que caiga el gameobject sobre el otro y aga el cambio de escena al tocarlo por su nombre de tag----------

----------------------------------------------------------------

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

public class CAMBIAACEROALAPRETARRATONIZQUIERDO : MonoBehaviour {



        void Update ()
        {


            if (Input.GetKey(KeyCode.Space))////funciona contantemente al apretar W mayusculas a de ser

            transform.Rotate (new Vector3 (0 * Time.deltaTime, 0, 0), Space.Self);

            //if (Input.GetButton ("Fire1")) ORIGINALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
            if (Input.GetButtonDown("Fire1"))


        transform.Rotate (new Vector3 (0 * Time.deltaTime, 0, 0), Space.Self);


            //    Application.LoadLevel (1);



        }
    }






viernes, 28 de enero de 2022

Unreal Engine 4;

Unreal Engine 4

 Experimentando y probando este motor de videojuegos y sin tener ni idea, me atrebo a publicar un videojuego en unas horas, Primero de todo la descarga de mi version es de unas 13 GB, estube todo el domingo de la mañana para descargarlo, ya que no tengo 5g en mi telefono movil que es lo que utilizo para mi aficion de internet de aprendizaje de videojuegos. Las conexiones de mi movil son de 4g... En fin acostumbrado a Unity es un programa muy complejo el de Unreal Engine, pero ejercitar con el, creo que facilita la comprension de Unity. La version que utilizo no compila en html5, las anteriores parece ser que si y por problemas de memoria, o espacio, que se ve ocupaba mucha no esta en la version que utilizo yo. Creo que es muy superior visualmente Unreal engine que Unity, pero es una opinion personal porque solo soy un aficionado aprendiz. Cuando arranca el motor de juegos se pueden elegir varias plantillas de formatos de videojuego, de disparos en primera persona, de 2d tipo marcianitos, o completamente en blanco desde cero. Asta 14 modos e contabilizado. 

 


 

 Y bueno ire experimentando con este motor de vez en cuando, lo mas sencillo que se puede hacer sin tener ni idea, es un simple juego de bolos, empujar unas eferas los con la camara y usar el efecto de gravedad,,,Simulate Physics, para poder empujar las esferas...aqui un enlace de lo practicado en unas horas...... 

 https://gamejolt.com/games/BOLAS_AZULES_CUELALAS_TODAS/684368


 

Como se ve en la imagen, las opciones de compilación, empaquetado, de un nuevo videojuego, falta la de html5, creo la suprimieron por que gasta muchos recursos, pero por lo mínimo que e leído, esta disponible en versiones mas antiguas del Unreal Enguine.


 

En la siguiente imagen en la parte izquierda, salen volúmenes básicos para empezar a trastear con Unreal, cubos, esferas,cilindros, conos,y demás elementos que ya son mas complicados cuando se parte desde cero, en la imagen arrastro una esfera al escenario del videojuego, sale en color azul y ahora mostrare como cambiarle ponerle una textura


 

Aquí en la parte de abajo hay una carpeta desde la que seleccionaremos texturas y arrastraremos una a la esfera….y por cierto la esfera esta congelada en el aire porque no esta activado su Physics...Simulate Physics a la derecha de la imagen...

 


 
arrastrar con el mouse desde la textura a a la esfera......

 


 En esta imagen el detalle de la esfera flotando en el aire, congelada, al darle al play para probar el video juego.

Las demas estan en el suelo por la simulacion de gravedad...esto ocurre por no haberle clicado la opcion de  Physics...Simulate Physics 


 



jueves, 20 de enero de 2022

The-wolf-man-of-the-underground-iii-demo-6;

 

domingo, 16 de enero de 2022

¿como funciona un sistema de quitar puntos o vidas en Unity y al hacerlo cambie la escena?;

¿Como funciona un sistema de quitar puntos o vidas en

Unity y al hacerlo cambie la escena?...adjunto el script

 

  using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DISMINUYEPUNTOSYCAMBIALAESCENA : MonoBehaviour {



        // Create public variables for player speed, and for the Text UI game objects
        public float speed;
        public Text countText;
        public Text winText;

        // Create private references to the rigidbody component on the player, and the count of pick up objects picked up so far
        private Rigidbody rb;
        private int count;/// <summary>



        // At the start of the game..
        void Start ()
        {


            // Assign the Rigidbody component to our private rb variable
            rb = GetComponent<Rigidbody>();

            // Set the count to zero 
            count = 10;

            // Run the SetCountText function to update the UI (see below)
            SetCountText ();

            // Set the text property of our Win Text UI to an empty string, making the 'You Win' (game over message) blank
            winText.text = "";
        }


        void OnTriggerEnter(Collider other) 
        {


            if (other.gameObject.CompareTag ("pomada"))



            {
                // Make the other game object (the pick up) inactive, to make it disappear
                other.gameObject.SetActive (false);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                // Add one to the score variable 'count'
                count = count - 1;


                SetCountText ();
            }
        }

        // Create a standalone function that can update the 'countText' UI and check if the required amount to win has been achieved
        void SetCountText()
        {


            countText.text = "VIDAS: " + count.ToString ();
            // Check if our 'count' is equal to or exceeded 12
            if (count <= 1) 
                //if (count >= 99) 
            {
                // Set the text value of our 'winText'
            //    winText.text = "JUEGO COMPLETADO";

                //    Destroy (gameObject, 1.2f); 

                Application.LoadLevel (1);

            }
        }
    }

 

 ----------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------- 

mismo script explicando las lineas..........

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DISMINUYEPUNTOSYCAMBIALAESCENA : MonoBehaviour {



        // Create public variables for player speed, and for the Text UI game objects
        public float speed;
        public Text countText;
        public Text winText;

        // Create private references to the rigidbody component on the player, and the count of pick up objects picked up so far
        private Rigidbody rb;
        private int count;/// <summary>



        // At the start of the game..
        void Start ()
        {


            // Assign the Rigidbody component to our private rb variable
            rb = GetComponent<Rigidbody>();

            // PARTIENDO DE 10 VIDAS QUE IRAN DISMINUYENDO
            count = 10;

            // Run the SetCountText function to update the UI (see below)
            SetCountText ();

            // Set the text property of our Win Text UI to an empty string, making the 'You Win' (game over message) blank
            winText.text = "";
        }


        void OnTriggerEnter(Collider other) 
        {

//GAMEOBJECT CON NOMBRE TAG "POMADA" QUE PRODUCIDA LA RESTA DE PUNTOS DE 1 EN 1
              if (other.gameObject.CompareTag ("pomada"))



            {
                // Make the other game object (the pick up) inactive, to make it disappear
                other.gameObject.SetActive (false);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                // RESTA 1 PUNTO
                count = count - 1;


                SetCountText ();
            }
        }

        // Create a standalone function that can update the 'countText' UI and check if the required amount to win has been achieved
        void SetCountText()
        {


            countText.text = "VIDAS: " + count.ToString ();
            // CUANDO ES MENOR DE 1 PUNTO CAMBIA LA ESCENA
            if (count <= 1) 

                //if (count >= 99) 
            {
                // Set the text value of our 'winText'
            //    winText.text = "JUEGO COMPLETADO";

                //    Destroy (gameObject, 1.2f); 

                Application.LoadLevel (1);

            }
        }
    }