Jajaja, juego todos los juegos de blizzards , pero ultimamente estoy jugando mucho Heroes of Storm y Starcraft, estoy esperando la nueva expancion de wow a ver que tal pinta...Saludos
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
#2
General (Antiguo) / Problema de Entender el problema
Diciembre 05, 2015, 04:26:24 AM
Hola gente que tal? como veran estoy queriendo hacer un monopoly, ahi en las imagenes subo como va el proyecto, esta la parte de compra hecha, la de cambiar tambien, algunos detalles como cuando compras una propiedad que marque debajo el color del jugador que posee la propiedad, y ahora estoy trabado en la parte de construir las casitas ahi en una de las imagenes puse como tengo armada la parte grafica, pero nose bien como resolver el problema...using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class ClickCasas : MonoBehaviour, IPointerClickHandler {
private bool estado =true;
// Use this for initialization
void Start () {
}
#region IPointerClickHandler implementation
public void OnPointerClick (PointerEventData eventData)
{
if (estado)
{
transform.GetComponent<CanvasRenderer>().SetColor(Color.red);
estado=false;
}
else
{
transform.GetComponent<CanvasRenderer>().SetColor(Color.white);
estado=true;
}
}
#endregion
}Tenia pensado hacer algo como tomar el nombre del panel padre, que cuando lo creo le pongo el nombre de la targeta, y de ahi nose bien que hacer o como hacerlooooo
.Alguno que me tira una mano plisss
using System.Collections;
using UnityEngine.EventSystems;
public class ClickCasas : MonoBehaviour, IPointerClickHandler {
private bool estado =true;
// Use this for initialization
void Start () {
}
#region IPointerClickHandler implementation
public void OnPointerClick (PointerEventData eventData)
{
if (estado)
{
transform.GetComponent<CanvasRenderer>().SetColor(Color.red);
estado=false;
}
else
{
transform.GetComponent<CanvasRenderer>().SetColor(Color.white);
estado=true;
}
}
#endregion
}Tenia pensado hacer algo como tomar el nombre del panel padre, que cuando lo creo le pongo el nombre de la targeta, y de ahi nose bien que hacer o como hacerlooooo
.Alguno que me tira una mano plisss
#3
General (Antiguo) / Problemas con List.Remove
Noviembre 29, 2015, 09:55:20 PM
Bueno gente, despues de mucho pensar pude resolver mi problema:
for(int i=0;i<tradeControlador.seleccionA.Count;i++)Jaja no era tan dificil pero bue no me salia, lo que hice al final era recorrer las dos listas la del jugador y la de seleccion, y comparo los name de los objetos si son iguales elimino el objeto de jugador con ese nombre.Saludos
{
jugadorB.Add(tradeControlador.seleccionA);
for(int y=0;y<jugadorA.Count;y++)
{
if(tradeControlador.seleccionA.name == jugadorA[y].name)
{
jugadorA.Remove(jugadorA[y]);
}
}
}
#4
General (Antiguo) / Problemas con List.Remove
Noviembre 29, 2015, 01:56:09 AM
Hola Gente!!, como les va?Vengo con otro problema de programacion, el tema es el siguiente, yo guardo en una lista un objeto:
public List<GameObject> jugadorA;cargo supongamos el objeto Img1.Mas adelante yo quiero eliminar ese objeto, pero yo tengo cargado en una lista de seleccion un objeto con el mismo nombre pero no es el mismo objeto, por temas de programación como los llamo desde distintos paneles son distintos objetos pero con el mismo nombre.entonces yo lo que hago es:
for(int i=0;i<tradeControlador.seleccionA.Count;i++)Lo que pasa es que a jugadorB si se agregan los objetos en la lista seleccionA, pero no se remueven los de jugadorA, si bien tienen el mismo nombre no son el mismo objeto y es por eso que no me lo esta eliminando, hay alguna forma de solucionar esto? Saludos
{
jugadorB.Add(tradeControlador.seleccionA);
jugadorA.Remove(tradeControlador.seleccionA);
}
#5
General (Antiguo) / Ayuda Logica
Noviembre 23, 2015, 04:20:49 AM
Buenas otra ves, bien tenias razon francoe1, siguiendo lo de Kaito logre mostras las cartas de un jugador como queria...ahora el tema es que el ray cast, collision del mouse no me lo toma dentro de UI , estoy usando imagenes no botones.... lo que si vi que en el EventSystem hay algunas propiedades eligibleForClick, pointerEnter que van detectando donde me paro donde cliqueo, queria saber como puedo acceder a eso por codigo, si alguno me adelanta algo joya, si no mañana igual me voy aponer a investigar.Gracias a todos por colaborar, estoy aprendiendo bastante dia a dia. Saludos
#6
General (Antiguo) / Ayuda Logica
Noviembre 22, 2015, 08:27:14 PM
Kaito gracias por el ejemplo esta bueno, pero no es lo que quiero lograr no quiero cambiar el orden de los elementos (aunque ahora aprendi a hacerlo public List<string> seleccionA;
public List<string> seleccionB;
public List<GameObject> jugadorACartas;
public List<GameObject> jugadorBCartas;
///////////Crear Targetas Jugador ///////////////////////////////////////////////
if (creacion)
{
if(!chequeo)
{
for (int x=0; x<targetas.Count; x++) {
tar = (GameObject)Instantiate (targetas
targetaContador++;
}
chequeo=true;
}
}
//////////////Aca es la parte de seleccion con mouse////////////
if(Input.GetMouseButtonUp(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
if(hit.collider)
{
string estable = hit.collider.name;
SeleccionTargeta(estable);
}
}
}
////////////////Funcion de Seleccion de Targeta/////////////
void SeleccionTargeta(string asd)
{
GameObject fix = GameObject.Find(asd);
float xPos;
float zPos;
xPos = fix.transform.position.x;
zPos = fix.transform.position.z;
if(asd.Contains("targeta"))
{
if(seleccionA.Contains(asd))
{
seleccionA.Remove(asd);
//GameObject fix = GameObject.Find(asd);
fix.transform.position = new Vector3 (xPos,0,zPos);
}
else
{
//GameObject fix = GameObject.Find(asd);
fix.transform.position = new Vector3 (xPos,2,zPos);
seleccionA.Add (asd);
}
}
if(asd.Contains("tor"))
{
if(seleccionB.Contains(asd))
{
seleccionB.Remove(asd);
fix.transform.position = new Vector3 (xPos,0,zPos);
}
else
{
fix.transform.position = new Vector3 (xPos,2,zPos);
seleccionB.Add (asd);
}
}
//////////////////////////////Aceptar Tradeo/////////////////////////////////////////////
public void AceptarTradeo()
{
tradear=false;
aceptar.SetActive(false);
rechazar.SetActive(false);
if(
{
for(int i=0;i<seleccionA.Count;i++)
{
jugadorB.Add(seleccionA);
jugadorA.Remove(seleccionA);
}
for(int x=0;x<seleccionB.Count;x++)
{
jugadorA.Add(seleccionB
B=false;
seleccionA.Clear();
seleccionB.Clear();
}
if(C)
{
for(int i=0;i<seleccionA.Count;i++)
{
jugadorC.Add(seleccionA);
jugadorA.Remove(seleccionA);
}
for(int x=0;x<seleccionB.Count;x++)
{
jugadorA.Add(seleccionB
C=false;
seleccionA.Clear();
seleccionB.Clear();
}
}
public List<string> seleccionB;
public List<GameObject> jugadorACartas;
public List<GameObject> jugadorBCartas;
///////////Crear Targetas Jugador ///////////////////////////////////////////////
if (creacion)
{
if(!chequeo)
{
for (int x=0; x<targetas.Count; x++) {
tar = (GameObject)Instantiate (targetas
- , new Vector3 (x *3, 0, 0), Quaternion.identity);
targetaContador++;
}
chequeo=true;
}
}
//////////////Aca es la parte de seleccion con mouse////////////
if(Input.GetMouseButtonUp(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
if(hit.collider)
{
string estable = hit.collider.name;
SeleccionTargeta(estable);
}
}
}
////////////////Funcion de Seleccion de Targeta/////////////
void SeleccionTargeta(string asd)
{
GameObject fix = GameObject.Find(asd);
float xPos;
float zPos;
xPos = fix.transform.position.x;
zPos = fix.transform.position.z;
if(asd.Contains("targeta"))
{
if(seleccionA.Contains(asd))
{
seleccionA.Remove(asd);
//GameObject fix = GameObject.Find(asd);
fix.transform.position = new Vector3 (xPos,0,zPos);
}
else
{
//GameObject fix = GameObject.Find(asd);
fix.transform.position = new Vector3 (xPos,2,zPos);
seleccionA.Add (asd);
}
}
if(asd.Contains("tor"))
{
if(seleccionB.Contains(asd))
{
seleccionB.Remove(asd);
fix.transform.position = new Vector3 (xPos,0,zPos);
}
else
{
fix.transform.position = new Vector3 (xPos,2,zPos);
seleccionB.Add (asd);
}
}
//////////////////////////////Aceptar Tradeo/////////////////////////////////////////////
public void AceptarTradeo()
{
tradear=false;
aceptar.SetActive(false);
rechazar.SetActive(false);
if(

{
for(int i=0;i<seleccionA.Count;i++)
{
jugadorB.Add(seleccionA);
jugadorA.Remove(seleccionA);
}
for(int x=0;x<seleccionB.Count;x++)
{
jugadorA.Add(seleccionB
- );
- );
B=false;
seleccionA.Clear();
seleccionB.Clear();
}
if(C)
{
for(int i=0;i<seleccionA.Count;i++)
{
jugadorC.Add(seleccionA);
jugadorA.Remove(seleccionA);
}
for(int x=0;x<seleccionB.Count;x++)
{
jugadorA.Add(seleccionB
- );
- );
C=false;
seleccionA.Clear();
seleccionB.Clear();
}
}
#7
General (Antiguo) / Ayuda Logica
Noviembre 22, 2015, 02:04:21 AM
No conocia eso de snap, vos decis algo asi? https://www.youtube.com/watch?v=OsnyJNbqYXoPero nose si esa sea la mejor (o una) solucion para lo que quiero hacer...
#8
General (Antiguo) / Ayuda Logica
Noviembre 21, 2015, 04:41:17 PM
Buenas, Oaken3d gracias habia visto el tutorial pero como no sabia como adaptarlo con botones ya que la variable del scroll mueve de 0 a 1 y no sabia como hacer para que se mostraran de 3 por ves... Yo lo estoy intentando hacer con gameobject, intente hacer eso en el codigo pero no me salio mi idea era, muestro posicion 0,1 y 2 (el array puede contener n elementos) si aprieto el boton hacia abajo utilizaba una variable contador que le aumentaba el valor entonces ahora el array me muestra el 1,2 y 3 y si apretaba hacia arriba restaba el valor a la variable contador y entonces deberia de mostrar 0,1 y 2.....en mi cabeza la logica funcionaba jaaa pero cuando lo lleve a la practica no me resulto, por ahi le estoy escapando en algo.Gracias por las Respuestas, se agradece la ayuda. PD: el tema que no me esta resultando en mi caso es la forma de mostrar los objetos creo clones no se si sera la mejor forma, debe haber otra mejor, la mia tengo q andar creando y destruyendo clones cada ves q muevo las flechas
.Mi objetivo es Hacer como subo ahi en la imagen una especie de intercambio de elementos, la parte que selecciono obejetos y despues los cambio la tengo hecha funciona bien, lo que me estaria faltando es mostrarlos en un panel, y bue poder ir navegandolos depende de la cantidad de targetas que tenga cada jugador (con las flechitas).
.Mi objetivo es Hacer como subo ahi en la imagen una especie de intercambio de elementos, la parte que selecciono obejetos y despues los cambio la tengo hecha funciona bien, lo que me estaria faltando es mostrarlos en un panel, y bue poder ir navegandolos depende de la cantidad de targetas que tenga cada jugador (con las flechitas). #9
General (Antiguo) / Ayuda Logica
Noviembre 19, 2015, 03:47:48 AM
Gente a ver la idea es la siguiente:Tengo una lista con varios objetos, lo que quiero hacer es una especie de scroll-bar pero por medio de botones: (ahi subo la imagen de lo que quiero lograr).La idea es cargar solo 3 objetos, el de la posicion 0,1 y 2 de la lista, si aprieto el boton con la flecha hacia abajo cargo los elementos 1,2 y 3 de la lista, si aprieto para arriba me vuele a mostrar los elementos 0,1 y 2...... y asi ir navegando la lista.Tengo el siguiente codigo pero no me esta resultando, a ver si alguien me puede ayudar:
o++;
}
Debug.Log (this.contador);
}
}Gracias Saludos
using UnityEngine;
using System.Collections.Generic;
public class Controlador : MonoBehaviour {
public List<GameObject> targetas;
public int contador;
public List<GameObject> tar;
public GameObject temporal;
// Use this for initialization
void Start ()
{
for(int y=0; y<targetas.Count-1;y++)
{
temporal = Instantiate(targetas[y],new Vector3(0,y*2,0),Quaternion.identity) as GameObject;
tar.Add(temporal);
}
}
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.name == "BotonAbajo")
{
tar.Clear();
InterCambiar(1);
Debug.Log("Presiono Boton Abajo");
}
if(hit.collider.name == "BotonArriba")
{
tar.Clear();
InterCambiar(-1);
Debug.Log("Presiono Boton Arriba");
}
}
}
}
public void InterCambiar(int contador)
{
this.contador = this.contador + contador;
int o = 0;
for (int x=this.contador; x<targetas.Count; x++)
{
temporal = Instantiate (targetas
- , new Vector3 (0, o * 2, 0), Quaternion.identity) as GameObject;
- , new Vector3 (0, o * 2, 0), Quaternion.identity) as GameObject;
o++;
}
Debug.Log (this.contador);
}
}Gracias Saludos
#10
General (Antiguo) / Networking Consulta variables en el servidor
Noviembre 01, 2015, 03:43:12 AM
Gracias Arthure, claro es lo q digo osea solo queria un ejemplo de como hacer una consulta al estado de una variable del lado del servidor y poder actualizarla, pero nadie me dio un simple ejemplo, todos me dicen ponete a estudiar bla bla bla.... ya tengo la aplicación terminada le faltan algunos detalles, y lo principal que funcione en red, y no logro entender bien el SyncVar ni El command, si alguien me diera un ejemplo, yo ya me doy una idea....y como dices he visto los ejemplos de las navecitas y los tanke pero no logro captar la idea para adaptarlo a mi juego.Básicamente lo que quiero hacer es siempre lo mismo consultar variables al servidor y poder actualizarlas. PD: Solo programo por hobby y para jugar con amigos, simplemente eso.Saludos
#11
General (Antiguo) / Networking Consulta variables en el servidor
Octubre 25, 2015, 09:09:30 PM
Hola Franco que tal? gracias por responder, mira te cuento: he empezado unity hace 3 meses, y creo yo que lo llevo bastante bien, se hacer cosas simples pero me salen lo mas bien.El tema es el siguiente hace 3 semanas vengo leyendo la documentacion de Networking de unity, y me parece super escasa, osea como vos decis si es algo tan complejo y grande, 5 hojas que hay nomas de documentación me parece poco.... me he cansado de ver videos tutoriales todos hace lo mismo, el juego de la navecita, el de los tanquesitos, y que se muevan sincronizadamente objetos en red....que eso me sale bien por que las fichas de los jugadores en mi juego se mueven bien en red.Si posteo aca es por que no logro entender bien la documentación, si no no estaría postiando cierto?, he buscado hasta cursos pagos con tal de saber un poco mas sobre este mundo pero no he encontrado nada online para hacer, si alguien conoce un curso pero en video conferencia no en video tutoriales estoy agradecido que me lo pasen.Creo q un ejemplo de como preguntar el estado de cierta variable del lado del servidor no deben ser muchas lineas de codigo....(nadie me ha dado uno).Pero bue desde el viernes decidí dejar el Networking porque no he encontrado ayuda en ningún lado, no hay documentación en español y la de ingles lo vuelvo a repetir me parece super acotada.PD: Si alguno sabe de algo en español que explique le agradesco que lo pase... por ahora estoy descepcionado.Ojo no es que soy un vago y me gusta que me den las cosas servidas al contrario me encanta leer y aprender, pero este tema no lo he podido resolver, Saludos
#12
General (Antiguo) / Networking Consulta variables en el servidor
Octubre 19, 2015, 06:11:30 PM
Si te entiendo es lo que quiero hacer el tema es q no se como
, ahi paso el codigo mas o menos que tengo:Este es el codigo del jugador:
}
else
{
GameObject kol = propM.propiedades
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//COMPRAR CASILLAS
public void ComprarPropiedad()
{
if(!jugador1Targetas.Contains(propTemporal))
{
jugador1Targetas.Add(propTemporal);
}
if(propTemporal == "CIUDAD")
ciudad=true;
}
}Bueno espero te sirva como para orientarme y ayudarme, gracias y saludos PD: si Hay alguna forma de optimizar mi codigo bienvenida sea tambien jeje.
, ahi paso el codigo mas o menos que tengo:Este es el codigo del jugador:using System.Collections.Generic;Y ahora paso el codigo de DataGame:
using UnityEngine.Networking;
public class PlayerNet : NetworkBehaviour {
public List<Transform> casillas;
public int casillaActual1=0;
public int casillaActual=0;
public bool controlador;
private GameObject cas;
int x=0;
private DataGame data;
private GameObject dataGame;
public string propTemporal;
private bool controlTargeta=false;
// Use this for initialization
void Start ()
{
if (!isLocalPlayer)
return;
///////////////////////////////////////////////////
dataGame = GameObject.Find("DataGame");
data = dataGame.GetComponent<DataGame> ();
cas = GameObject.Find ("Tablero");
Debug.Log (cas.transform.childCount);
foreach (Transform hijos in cas.transform)
{
if (cas.transform.name == "Centro")
{
Debug.Log("No Lo Ingresamos en la Lista");
}
else
{
Debug.Log("Soy el Hijo: " + hijos.transform);
casillas.Add(hijos.transform);
}
}
transform.position = new Vector3 (4.19f, 0f, -4.45f);
}
// Update is called once per frame
void Update () {
////////////////////////////////////////////////////
if (!isLocalPlayer)
return;
/////////GENERAMOS NUMERO ALEATORIO SIMULANDO DADO//////////
if (Input.GetKeyUp (KeyCode.Space)) {
var dado = 1;//Random.Range (1, 6);
casillaActual = casillaActual + dado;
//MOVER JUGADOR POR LAS CASILLAS
if (casillaActual >= 40)
{
casillaActual = casillaActual - casillas.Count;
transform.position = casillas[casillaActual].position;
} else
{
transform.position = casillas[casillaActual].position;
}
////////////////////////////////////////////////////////
if(casillaActual==1)
{
if(data.ciudad==false)
{
controlTargeta=true;
propTemporal = "CIUDAD";
data.MostrarTargeta("CIUDAD");
}
}
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.Networking;
public class DataGame : NetworkBehaviour {
public bool ciudad = false;
public List<string> jugador1Targetas;
public List<string> jugador2Targetas;
public GameObject targetaM;
public List<GameObject> visualTargetas;
public bool ta=false;
private GameObject targeta;
public int dineroA = 2000;
public int dineroB = 2000;
public GameObject go;
public StateManager co;
public GameObject prop;
public MostrarTargeta propM;
public string propTemporal;
public void MostrarTargeta(string nombreTargeta)
{
propTemporal = nombreTargeta;
prop = GameObject.Find("Targetas");
propM = prop.GetComponent<MostrarTargeta>();
go = GameObject.Find("Manager");
co = go.GetComponent<StateManager>();
co.ActivarPanel();
if (nombreTargeta == "CIUDAD")
{
for(int x=0;x<propM.propiedades.Count;x++)
{
if(x==0)
{
GameObject ko = propM.propiedades
- ;
}
else
{
GameObject kol = propM.propiedades
- ;
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//COMPRAR CASILLAS
public void ComprarPropiedad()
{
if(!jugador1Targetas.Contains(propTemporal))
{
jugador1Targetas.Add(propTemporal);
}
if(propTemporal == "CIUDAD")
ciudad=true;
}
}Bueno espero te sirva como para orientarme y ayudarme, gracias y saludos PD: si Hay alguna forma de optimizar mi codigo bienvenida sea tambien jeje.
#13
General (Antiguo) / Networking Consulta variables en el servidor
Octubre 19, 2015, 04:36:52 PM
Hola que tal? tengo un juego de mesa hecho en unity, y queria hacerlo para poder jugar online, y estoy teniendo problemas con algunos temas, el juego en principio logro crear los jugadores y se mueven por el tablero, el tema es con el manejo de las variables que serian globales por asi decirlo, por ejemplo yo tengo la casilla ciudad como bool, si un juegador posee esa casilla deberia ponerse en true y almacenar esa variable en ese jugador, el tema es que no se como hacerlo, mas o menos la estructura que arme en scripts es cada jugador tiene el script jugador y las variables globales las manejo con un script DataGame, sin aplicar el network todo funciona fantastico el tema es cuando aplico el network, es como si todos los jugadores tuvieran la clase DataGame y modificaran su clase y no una global, entonces no me esta funcionando....espero haberme explicado jajaja
. Saludos y agradeceria algo de orientacion
. Saludos y agradeceria algo de orientacion
#14
General (Antiguo) / Error de Programacion
Agosto 13, 2015, 08:30:28 PM
Hola iRobb gracias por las respuestas, te comento que yo lo que estoy haciendo es seguir el libro ese que estoy estudiando he empezado hace un mes recién en este mundo de Unity, no tengo nada de idea todavía, trato de ir entendiendo lo que voy viendo, ahí te subo lo que estoy siguiendo, para que veas como controlo los estados, no entendi mucho eso que me pusiste arriba supongo q es como controlo yo por ejemplo, en el libro usa la funcion Update la delega a la funciones StateUpdate de cada clase, supongo que me decis hacer algo asi con init y start, perdon por la ignorancia jeje . Saludos
http://unityspain.com/applications/core/interface/file/attachment.php?id=8306">TeoriaC#.rar
http://unityspain.com/applications/core/interface/file/attachment.php?id=8306">TeoriaC#.rar
#15
General (Antiguo) / Error de Programacion
Agosto 13, 2015, 06:26:28 PM
Bueno gracias por la respuesta, mira te comento que descubri algo, busco el objeto dentro del StateUpdate() en vez cuando instancio la clase me lo encuentra pero como a la segunda o tercera ves:
public void StateUpdate()osea tiene que pasar dos o tres frame para que me reconozca el objeto, ahora bien por que tarda tanto, es raro no?, que no lo pueda reconocer cuando llamo al constructor. pensaba en ponerlo en un while dentro del constructor osea que espere a que tome el objeto.... alguien sabe por que tarda tanto? cuando cargo la escena no deberia de cargarse todos los objetos en memoria inmediatamente?, saludoste subo en un archivo zip?.
{
player = GameObject.Find("Jugador");
Debug.Log (player);
if (player != null) {
controller = player.GetComponent<PlayerControl> ();
}
Debug.Log (controller);
}