sábado, 8 de enero de 2022

Clonar enemigos con Unity.;Instantiation...;clonaciones;


 

Clonar enemigos con Unity.


Mirando tutoriales e visto como clonar personajes que fluyen continuamente de la nada en una escena de Unity, yo no tengo conocimientos para programar algo así, pero luego estuve pensando, jolín si clono proyectiles y consigo hacer disparos, pues uso el mismo sistema para personajes con movimiento incluido, y lo e conseguido aquí en el video podéis verlo, unos personajes prefabricados, con su rigidbody, ahora e de probar la persecución al player del videojuego…..le e de poner un NavMesh Agent y de preparar el terreno con un…


siguiendo este tema antes de poner un efecto de NavMesh Agent para que los clones persigan al player....... añado ejemplos de scripts sobre clonaciones y de Instantiation...

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

public class clonar2 : MonoBehaviour {


//public class clonar2 : MonoBehaviour {




// using UnityEngine;

//public class InstantiateExample : MonoBehaviour
// {
public GameObject prefab;

void Start()
{
for (int i = 0; i < 10; i++)
Instantiate(prefab, new Vector3(i * 2.0f, 0, 0), Quaternion.identity);
}
}

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

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

public class clonar3 : MonoBehaviour {

    // Use this for initialization
    //void Start () {
        
//    }
    
    // Update is called once per frame
    //void Update () {
        
    //}
//}



//public class Instantiation : MonoBehaviour {

    void Start() {
        for (int y = 0; y < 5; y++) {
            for (int x = 0; x < 5; x++) {
                GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
                cube.AddComponent<Rigidbody>();
            //    cube.transform.position = new Vector3(x, y, 0);

                cube.transform.position = new Vector3 (-31f, -0.127f, -47f);


            }
        }
    }
}
-------------------------------------------------------------------------------------------------------------

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

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

public class clonar4 : MonoBehaviour {

    // Use this for initialization
//    void Start () {
       
//    }
    
    // Update is called once per frame
    //void Update () {
       
//    }
//}


public Transform brick;

void Start() {
    for (int y = 0; y < 5; y++) {
        for (int x = 0; x < 5; x++) {
        //    Instantiate(brick, new Vector3(x, y, 0), Quaternion.identity);

                Instantiate(brick, new Vector3(-31f, -0.127f, -47f), Quaternion.identity);

        }
    }
}
}

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

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

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

public class clonar5 : MonoBehaviour {
    public GameObject prefab;
    public int numberOfObjects = 20;
    public float radius = 5f;
    // Use this for initialization
    void Start () {

        for (int i = 0; 1 < numberOfObjects; i++) {
            float angle = i * Mathf.PI * 2 / numberOfObjects;
            Vector3 pos = new Vector3 (Mathf.Cos (angle), 0, Mathf.Sin (angle)) * radius;
            Instantiate (prefab, pos, Quaternion.identity);

        }
    }
//}
    // Update is called once per frame
//    void Update () {
       
    }
//}

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

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

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

    public class clonar11 : MonoBehaviour
    {


public GameObject prefab;
public int numberOfObjects = 20;
public float radius = 5f;

void Start()
{
    for (int i = 0; i < numberOfObjects; i++)
    {
        float angle = i * Mathf.PI * 2 / numberOfObjects;
        Vector3 pos = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius;
        Instantiate(prefab, pos, Quaternion.identity);
    }
}

}
-----------------------------------------------------------------------------------------------------------------

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

Los scripts de la parte inferior del video son los que e utilizado en el ejemplo del mismo video .

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

public class plumadaauno : MonoBehaviour {



        //public GameObject Sphere;
        // Use this for initialization




        public Rigidbody Sphere;
        public float velocidad = 1f;
        void disparador () {
            Rigidbody SphereClon = (Rigidbody) Instantiate (Sphere, transform.position, transform.rotation);
            SphereClon.velocity = transform.up * velocidad;

            //void Start () {

        }

        // Update is called once per frame
        void Update () {


            //    void Update () {
        }

        void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
            //if (other.gameObject.CompareTag ("pepe")){
            if (other.gameObject.CompareTag ("pollo")){


                //if (Input.GetKey (KeyCode.Space)) {
                //Instantiate (Sphere);


                disparador ();///////////////////////////imbento yo


            }}
    }


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

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

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

public class disparadorautomaticocañonenemigo10peroa1 : MonoBehaviour {


        // Use this for initialization
        void Start () {

            //transform.rotation = Quaternion.Euler (0,45, 0);
        }

        // Update is called once per frame
        void Update () {
            // Es la rotacion de Angulos de Euler en grados.
            transform.Rotate (new Vector3 (0 * Time.deltaTime,1.1f, 0), Space.Self);


        }
    }




esta entrada seguirá en construcción a lo largo de esta quincena de enero del 2022.....es muy laboriosa, y ala vez que comento, estoy practicando y aprendiendo, 


algunos datos interesantes a continuación, estoy aprendiendo de este enlace

https://docs.unity3d.com/es/530/Manual/InstantiatingPrefabs.html

y una curiosidad, copiar a mano los scripts me cuesta un montón yo utilizo 



MonoDevelop - Unity 

 para hacer mis scripts, entonces uso la opción de seleccionar los textos de la web de los ejemplos de Unity.... copiar y pegar, y me encuentro que no los pega en el MonoDevelop de Unity, como también tengo y utilizo el

Microsoft Visual Studio para ver los scripts, lo abro pego aquí lo que me interesa y si aquí queda copiado pegado me lo admite..!!!!!......y desde aquí ,desde el visual studio ,buelbo a copiar y a pegar al que utilizo con Unity el MonoDevelop - Unity 

y así e resuelto este fastidioso problema, se que en realidad lo ideal seria copiar a mano los scripts pero es muy entretenido de tiempo y de vez en cuando creo se adelanta mas copiando y pegando...en fin son métodos de aprendizaje que utilizamos cada uno