Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Como mani***r objetos que estan en un array?

Iniciado por Danitorres473, Diciembre 05, 2015, 10:43:08 PM

Tema anterior - Siguiente tema
Diciembre 05, 2015, 10:43:08 PM Ultima modificación: Diciembre 05, 2015, 11:11:46 PM por Danitorres473
Buenas gente,queria postear un poco de mi codigo a ver si alguien me puede ayudar,tengo problemas con los arrays,el tema es el siguiente,estoy tratando de hacer un juego tipo pong pero con muchas pelotas,meti las pelotas en un array y ahora quiero controlar la ia del enemigo en referencia al array de pelotas,aca estan mis codigos.el primero es el spawneador de pelotas donde esta el array:
var ball:GameObject;
static var ballArray:GameObject[];
var timeToSpawn:int=10;
function Start(){
    ballArray= GameObject.FindGameObjectsWithTag("Ball");
}
function Update(){
    timeToSpawn-=Time.deltaTime;
    ballArray= new GameObject[10];
   
    for(var i:int;i<ballArray.Length;i++){
        if(timeToSpawn==0){
        var clone=Instantiate(ball,Vector3.zero,Quaternion.identity);
         timeToSpawn=500;
       
    }
ballArray=clone;

}
}
function Awake () {
   
   
 
}
y aca esta el controlador de la ia enemiga:
#pragma strict
var speed:float =10;
var ball:GameObject;
//var ballCon=spawnBallController;
function Update () {
   
   
    if(spawnBallController.ballArray.transform.position.y>transform.position.y){
            transform.position = new Vector3(transform.position.x,transform.position.y+0.2,0);
            transform.position.y = Mathf.Clamp(transform.position.y,-3.4,3.92);
        }
    if(spawnBallController.ballArray.transform.position.y<transform.position.y){
            transform.position = new Vector3(transform.position.x,transform.position.y-0.2,0);
            transform.position.y = Mathf.Clamp(transform.position.y,-3.4,3.92);
        }
   
   
   
   
}
el error que me tira en unity es el siguiente:en la linea:    if(spawnBallController.ballArray.transform.position.y>transform.position.y){ "transform" is not a member of unityengine.gameObject[];si no me explique bien avisen y por favor si alguien me puede dar una mano se lo voy a agadecer

Debes indicar a con cuál objeto del array quieres trabajar. spawnBallController.ballArray[numero].transform.position.yTambién ten en cuenta que deberías meter la línea ballArray[i] = clone; dentro del bucle porque sino puede que no te agregue los clones al array.

[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34621" data-ipsquote-contentcommentid="124633">Debes indicar a con cuál objeto del array quieres trabajar. spawnBallController.ballArray[numero].transform.position.yTambién ten en cuenta que deberías meter la línea ballArray[i] = clone; 

pues no se que quedras conseguir pero partiendo de la base de que siempre tienes un array vacio y que solo trabajas con la primera posicion del array ... pues no me he molestado mucho mas en mirar el resto ^.^

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34621" data-ipsquote-contentcommentid="124638 date=1449359366]pues no se que quedras conseguir pero partiendo de la base de que siempre tienes un array vacio y que solo trabajas con la primera posicion del array ... pues no me he molestado mucho mas en mirar el resto ^.^[/quote]hola,gracias por responder,soy muy nuevo en unity y puedo cometer errores que para los mas experimentados pueden pareces tontos,podrias explicarme por que el array esta vacio por favor?

Cita de: Danitorres473 date=1449364231" data-ipsquote="" data-cite="Danitorres473" class="ipsQuotehola,gracias por responder,soy muy nuevo en unity y puedo cometer errores que para los mas experimentados pueden pareces tontos,podrias explicarme por que el array esta vacio por favor?
Claro, si lo pides asi ... la linia ballArray = new GameObject [10]; dentro del Update es la "culpable" de que tu array siempre este vacio.

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34621" data-ipsquote-contentcommentid="124643">Claro, si lo pides asi ... la linia ballArray = new GameObject [10]; dentro del Update es la "culpable" de que tu array siempre este vacio.[/quote]si gracias,lo pude cambiar ayer y asi quedo mi nuevo codigo de spawnBallController:
#pragma strict
var speed:float =10;
//var ball:GameObject;
//var ballCon=spawnBallController;

function Update () {
     
    for(var i:int;i<spawnBallController.ball.length;i++){
    if(spawnBallController.ball.transform.position.y>transform.position.y){
            transform.position = new Vector3(transform.position.x,transform.position.y+0.2,0);
            transform.position.y = Mathf.Clamp(transform.position.y,-3.4,3.92);
        }
if(spawnBallController.ball.transform.position.y<transform.position.y){
            transform.position = new Vector3(transform.position.x,transform.position.y-0.2,0);
            transform.position.y = Mathf.Clamp(transform.position.y,-3.4,3.92);
        }
   
   
   }
   
}
el tema es que ahora me saltan dos errores de referencia nula,ambos salen en las lineas que quiero recorrer el array,este es el error que me sale:NullReferenceExecption:Object reference not set to an instance of an object

Diciembre 06, 2015, 11:34:14 AM #7 Ultima modificación: Diciembre 06, 2015, 11:36:31 AM por Arthure
eso es porque sigue estando vacio xD antes lo vaciabas, ahora directamente es que no metes nada ... en el mejor de los casos, aunque no saltara fallo, tendrias 1 posibilidad entre 500 (por poner un numero) de meter un objeto en el array; y si se diera esa casualidad increible, la segunda posicion del array y consecutivas siempre estarian vacias por lo que saltaran errores de NullReferenceException al intentar acceder a esas posiciones.supongo que no te molestaria si el mejor consejo que te puedo dar es "aprende y practica bastante en programacion basica antes de meterte a Unity" porque tu error no llega ni a la categoria de error en programacion (no saber cosas como funciones o variables) ... es un error de logica que es aun peor.
Nunca habria ningun gameobject dentro del array ... ni 1 de cada 500 veces, ni 1 de cada 1.000.000.000

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34621" data-ipsquote-contentcommentid="124647 date=1449398054]eso es porque sigue estando vacio xD antes lo vaciabas, ahora directamente es que no metes nada ... en el mejor de los casos, aunque no saltara fallo, tendrias 1 posibilidad entre 500 (por poner un numero) de meter un objeto en el array; y si se diera esa casualidad increible, la segunda posicion del array y consecutivas siempre estarian vacias por lo que saltaran errores de NullReferenceException al intentar acceder a esas posiciones.supongo que no te molestaria si el mejor consejo que te puedo dar es "aprende y practica bastante en programacion basica antes de meterte a Unity" porque tu error no llega ni a la categoria de error en programacion (no saber cosas como funciones o variables) ... es un error de logica que es aun peor.Nunca habria ningun gameobject dentro del array ... ni 1 de cada 500 veces, ni 1 de cada 1.000.000.000[/quote]si reconozco que programacion no es mi fuerte,voy a seguir tu consejo y voy a buscar tutoriales sobre estos temas,gracias

Etiquetas: