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);
    }
}