Muy buenas, actualmente tengo un problema cuando intento construir un juego para Android, para hacerlo funcionar he seguido un vídeo de Youtube en el que lo explica muy bien.
He descargado Android Studio e instalado (para SDK)
He descargado Java e instalado(para JDK)
He descargado android ndk.
Después de eso he ido hacia la pestaña Edit/preferences, y en external tools he puesto las carpetas raíz donde se encuentra cada uno el primero corresponda a SDK el segundo a JDK y el tercero a NDK. (Adjunto imagen para demostrarlo)
Después de tener esto he ido a build settings y aquí he cambiado de plataforma para tener Android.
Ahora ya debería de estar todo listo para hacerlo funcionar.. pues cuando le doy a construir me salta una ventana de error (adjunto imagen)
Por último os dejo los errores que me aparecen en consola:
1º) Win32Exception: ApplicationName='C:/Program Files/Java/jdk1.8.0_121\bin\java.exe', CommandLine='-Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Program Files/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -', CurrentDirectory='C:\Users\infotronica\Desktop\Programas\Unity\2o juego\nivel 2'
System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
[/quote]
2º) Error building Player: Win32Exception: ApplicationName='C:/Program Files/Java/jdk1.8.0_121\bin\java.exe', CommandLine='-Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Program Files/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -', CurrentDirectory='C:\Users\infotronica\Desktop\Programas\Unity\2o juego\nivel 2'
[/quote]
Espero que puedan ayudarme, un saludo y gracias!
(//%3CfileStore.core_Attachment%3E/monthly_2017_03/Captura2.PNG.bcdfe0df359072673186113d78df9dff.PNG)
(//%3CfileStore.core_Attachment%3E/monthly_2017_03/Captura.PNG.f7d70fd095fbb32d2baee89ffcdb7bd0.PNG)
No era necesario descargar Android Studio xD, nunca construi un apk sobre todo por que es díficil(por lo menos para mí(para el APK)), un amigo me dijo que tuvo que descargar muchas cosas aparte de las que mencionas tanto para la PC como la su celular, no pedi detalles.. pero por el error dedusco que es por que no actualizaste el sdk desde consola.
Jaja puf.. yo he seguido los pasos de un vídeo y lo he descargado.. pero bueno jaja..
¿A qué te refieres con qué no actualicé el sdk desde la consola? :S
Cuando descargas el sdk dentro del .rar hay una carpeta de tools dentro de la misma hay una exe.(bueno varios pero clickeas el primero) le das permiso de administrador y te sale una pestaña de android para actualizar son 13 paquetes poner install y esperas(son más de 10 GB) si quieres te arriesgas nunca construi una build en android por que nunca me detecto el JDK(no el sdk) así que no te puedo decir con certeza si es eso, pero si te fijas en el error dice que la versión es incorrecta..., otra opción es esperar a que un pro te diga si es eso.
jaja gracias ytinU, igualmente ahora no me da tiempo a hacerlo, esperaré a mañana y si han dado otra opción probaré lo que dices!
Muchas gracias! :)
Buenas. No se solucionarte el error ya que a mi no me sucedió. Yo creo mis aplicaciones para móviles en B4A y ese es el primer programa que tengo en el portátil. Tiempo después cuando descubrí Unity tuve la suerte que solo le puse las direcciones donde correspondían y todo me funcionó a la primera. Pudiendo crear mis APK en Unity. Lo que si te puedo decir es que el SDK de Android no se lleva nada bien con rutas con espacios, a mi me dio mas de un quebradero de cabeza con el B4A, por lo tanto eso de c:/Program File/..... no es lo adecuado. Seguramente con Unity no pase y ese no sea tu error pero yo empezaría por ahí.
Te voy a dejar la pagina donde vienen las instrucciones de como instalar B4A y espero que se te solucione el problema.
https://www.b4x.com/b4a.html (https://www.b4x.com/b4a.html)
Cita de: J_L date=1488613727Buenas. No se solucionarte el error ya que a mi no me sucedió. Yo creo mis aplicaciones para móviles en B4A y ese es el primer programa que tengo en el portátil. Tiempo después cuando descubrí Unity tuve la suerte que solo le puse las direcciones donde correspondían y todo me funcionó a la primera. Pudiendo crear mis APK en Unity. Lo que si te puedo decir es que el SDK de Android no se lleva nada bien con rutas con espacios, a mi me dio mas de un quebradero de cabeza con el B4A, por lo tanto eso de c:/Program File/..... no es lo adecuado. Seguramente con Unity no pase y ese no sea tu error pero yo empezaría por ahí.
Te voy a dejar la pagina donde vienen las instrucciones de como instalar B4A y espero que se te solucione el problema.
https://www.b4x.com/b4a.html (https://www.b4x.com/b4a.html)
Gracias J_L, vi en un foro que el error era debido a unas exclamaciones que tenía esa persona... he probado a cambiarlo de directorio, y me aparecen errores como:
1º) Unit***itor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:33)
Unit***itor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, Unit***itor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
Unit***itor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, Unit***itor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
Unit***itor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, Unit***itor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
Unit***itor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, Unit***itor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
Unit***itor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, System.String workingdir, Unit***itor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
Unit***itor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, Unit***itor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
Unit***itor.Android.AndroidSDKTools.UpdateToolsDirectories ()
Unit***itor.Android.AndroidSDKTools..ctor (System.String sdkRoot)
Unit***itor.Android.AndroidSDKTools.GetInstance ()
Unit***itor.Android.PostProcessor.Tasks.CheckAndroidSdk.Execute (Unit***itor.Android.PostProcessor.PostProcessorContext context)
Unit***itor.Android.PostProcessor.PostProcessRunner.RunAllTasks (Unit***itor.Android.PostProcessor.PostProcessorContext context)
Unit***itor.Android.PostProcessAndroidPlayer.PrepareForBuild (BuildOptions options, BuildTarget target)
Unit***itor.Android.AndroidBuildPostprocessor.PrepareForBuild (BuildOptions options, BuildTarget target)
Unit***itor.PostprocessBuildPlayer.PrepareForBuild (BuildOptions options, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:98)
Unit***itor.HostView:OnGUI()
2º) Error building Player: Win32Exception: ApplicationName='C:\Program Files (x86)\bin\java.exe', CommandLine='-Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -', CurrentDirectory='C:\Users\infotronica\Desktop\Programas\Unity\2o juego\nivel 2'
Digamos que ahora mi primer error se ha hecho inmenso... vaya locura..
Por último, lo que me comentas de B4A, qué es?
Muchas gracias, un saludo!
Madre mia, espero que al final lo consigas solucionar.
B4A es un programa para programar en Basic para Android en vez de utilizar Java. Es muy similar a lo que fue visual basic 6.0.
Cita de: J_L date=1488788096Madre mia, espero que al final lo consigas solucionar.
B4A es un programa para programar en Basic para Android en vez de utilizar Java. Es muy similar a lo que fue visual basic 6.0.
Puf, que va.. lo veo demasiado complicado, no sé si lo conseguiré, lo que si te quería preguntar.. es lo siguiente:
Yo cuando en Unity (creando un juego para pc) quiero coger algún objeto o entrar en algún sitio uso lo siguiente:
if (Input.GetKeyDown("e") )
{
abrirPuerta();
}
[/quote]
Mi pregunta es.. si yo quiero hacerlo para Android ¿Qué tendría que poner, para qué cuando apriete a dicha puerta, o en el caso de un objeto qué tendría que poner para que al pinchar en el touch en cierto sitio coja ese objeto o abra una puerta?
Un saludo!
Bueno Infotronica, casi me veo obligado debido a que nadie te responde. He de decirte dos cosas, 1ª que llevo alejado de Unity casi 7 meses por culpa de una oposición que me sale después de semana santa y eso es una eternidad para responderte adecuadamente. Creo que hay mejores personas en este foro para hacerlo pero deberías plantear la pregunta en otro hilo. De todas formas intentaré responder a tu pregunta pero te diré que solamente hice dos pruebas para Android y entró aquí escasos 5 minutos para darme la satisfación del día. No he cogido objetos ni abierto puertas pero si te puedo decir como hice el movimiento del personaje para un móvil o Tablet android.
Aunque habrá otros métodos mas adecuados yo cree dos funciones publicas para unos botones en el Cambas. Una de pulsado y otra que no se pulsa. En la función puse un valor booleano de true o false que se activaba en el Update y así solo tenia que decirle que era true cuando quisiera que se moviera. Ej:
public void BotonIzquierdaPulsa()
{
valor1 = true;
TiempoInicio = Time.time;
}
public void BotonIzquierdaSuelta()
{
valor1 = false;
PosicionOffsetEn_x = (Escenario.mainTextureOffset.x);
}
Ahora sólo tenia que insertar un evento en el button del cambas para que leyera eso. Por ejemplo Event Trigger (script) y decirle la función que la compone y el personaje que la lleva. Para el aprieta y suelta el botón se la puse en el evento Pointer Up y Pointer Down y decirle en el Update algo como esto. Ej.:
if (valor1 == true || Input.GetKey(KeyCode.LeftArrow))
{
Quaternion deltaRotation = Quaternion.Euler(AnguloRotacion * (velocidadrotacion * Time.deltaTime));
Cb.MoveRotation(Cb.rotation * deltaRotation);
Cb.MovePosition(Cb.position - Desplazamiento);
Escenario.mainTextureOffset = new Vector2((((Time.time - TiempoInicio) * -0.05f) % 1) + PosicionOffsetEn_x, 0);
}
El método funciona perfectamente y muy bien, pero seguramente un programador profesional te pueda aconsejar mejor que yo ( ya que no entiendo pq no funciona en el On Click y si en Event Trigger.
Bien, sobre la pregunta que planteas no se me ha dado el caso, pero siempre podrías hacer un raycast desde la cámara ha donde pulsas y si es el objeto deseado pues que haga lo que hay dentro del IF. Eso es lo primero que se me ocurre, pero seguro que hay otras formas mejores.
Un saludo, y espero haber respondido a tu pregunta. De todas formas, lo dicho, haz la pregunta en otro hilo y seguro que alguien más profesional que yo te responde.
Como alguna vez dijo Ligthbug, yo también lo hago todo a prueba y error.
Cita de: J_L date=1488884081Bueno Infotronica, casi me veo obligado debido a que nadie te responde. He de decirte dos cosas, 1ª que llevo alejado de Unity casi 7 meses por culpa de una oposición que me sale después de semana santa y eso es una eternidad para responderte adecuadamente. Creo que hay mejores personas en este foro para hacerlo pero deberías plantear la pregunta en otro hilo. De todas formas intentaré responder a tu pregunta pero te diré que solamente hice dos pruebas para Android y entró aquí escasos 5 minutos para darme la satisfación del día. No he cogido objetos ni abierto puertas pero si te puedo decir como hice el movimiento del personaje para un móvil o Tablet android.
Aunque habrá otros métodos mas adecuados yo cree dos funciones publicas para unos botones en el Cambas. Una de pulsado y otra que no se pulsa. En la función puse un valor booleano de true o false que se activaba en el Update y así solo tenia que decirle que era true cuando quisiera que se moviera. Ej:
public void BotonIzquierdaPulsa()
{
valor1 = true;
TiempoInicio = Time.time;
}
public void BotonIzquierdaSuelta()
{
valor1 = false;
PosicionOffsetEn_x = (Escenario.mainTextureOffset.x);
}
Ahora sólo tenia que insertar un evento en el button del cambas para que leyera eso. Por ejemplo Event Trigger (script) y decirle la función que la compone y el personaje que la lleva. Para el aprieta y suelta el botón se la puse en el evento Pointer Up y Pointer Down y decirle en el Update algo como esto. Ej.:
if (valor1 == true || Input.GetKey(KeyCode.LeftArrow))
{
Quaternion deltaRotation = Quaternion.Euler(AnguloRotacion * (velocidadrotacion * Time.deltaTime));
Cb.MoveRotation(Cb.rotation * deltaRotation);
Cb.MovePosition(Cb.position - Desplazamiento);
Escenario.mainTextureOffset = new Vector2((((Time.time - TiempoInicio) * -0.05f) % 1) + PosicionOffsetEn_x, 0);
}
El método funciona perfectamente y muy bien, pero seguramente un programador profesional te pueda aconsejar mejor que yo ( ya que no entiendo pq no funciona en el On Click y si en Event Trigger.
Bien, sobre la pregunta que planteas no se me ha dado el caso, pero siempre podrías hacer un raycast desde la cámara ha donde pulsas y si es el objeto deseado pues que haga lo que hay dentro del IF. Eso es lo primero que se me ocurre, pero seguro que hay otras formas mejores.
Un saludo, y espero haber respondido a tu pregunta. De todas formas, lo dicho, haz la pregunta en otro hilo y seguro que alguien más profesional que yo te responde.
Como alguna vez dijo Ligthbug, yo también lo hago todo a prueba y error.
Muchas gracias por responder J_L, lo primero espero que tengas muchas suerte en tu oposición.
Lo segundo sobre el tema de mover sé hacer, ya que, viendo algún vídeo de youtube, hay un elemento o como es FirstPersonController para Android en donde la parte izquierda es para moverte y la parte derecha para girar la cámara, incluso debajo de este último trae un botón de saltar, todo esto invisible, pero igualmente muchas gracias por contestar.
Lo que tengo duda es si alguna vez podré compilar algún juego a Android debido a los errores jajaj.
De nuevo, Muchas gracias por contestar, Un saludo!
Hola. ¿Se ha solucionado este problema?
¿Puede el autor marcar la mejor respuesta, que le ha facilitado solucionar el problema, por favor?
Recordad que ésto no lo leéis sólo vosotros y puede servir de ayuda a más gente que le ocurra...
Cita de: pioj date=1488961236Hola. ¿Se ha solucionado este problema?
¿Puede el autor marcar la mejor respuesta, que le ha facilitado solucionar el problema, por favor?
Recordad que ésto no lo leéis sólo vosotros y puede servir de ayuda a más gente que le ocurra...
Hola pioj, no, no se ha solucionado mi error, sigo esperando a ver si alguien puede solucionarlo.
Un saludo.
Cita de: infotronica date=1488977865Hola pioj, no, no se ha solucionado mi error, sigo esperando a ver si alguien puede solucionarlo.
Un saludo.
Pues ahora le dio el venaso a Unity de reconocerme el JDK... Al fin!!.. y tuve que aprender algunas cosas extras, si tu duda sigue en pie puedo ayudarte más detalladamente, aunque debo decir que a mí no me pidio en NDK.
Cita de: ytinU date=1489541611Pues ahora le dio el venaso a Unity de reconocerme el JDK... Al fin!!.. y tuve que aprender algunas cosas extras, si tu duda sigue en pie puedo ayudarte más detalladamente, aunque debo decir que a mí no me pidio en NDK.
Hola ytinU, casualmente hoy he vuelto a descargar el SDK, y lo he puesto en el escritorio, además he borrado la dirección de JDK y de NDK solamente tengo puesto la raíz de SDK y de repente me ha creado la apk jaja!
Un saludo!
Ohh vale..
Cita de: infotronica date=1488839056if (Input.GetKeyDown("e") )
{
abrirPuerta();
}
Soy nuevo en android también,pero supongo que el método OnMouseDown() deberia funcionar, este deberia detectar la colisión(de tu dedo) con un colider.
Cita de: ytinU date=1489614497Ohh vale..
Soy nuevo en android también,pero supongo que el método OnMouseDown() deberia funcionar, este deberia detectar la colisión(de tu dedo) con un colider.
Acabo de ver tu mensaje, ya que, lo has puesto en el tema de problema al construir con android jaja gracias por contestar lo que me has comentado no sé como puedo implementarlo yo he estado probando:
#pragma strict
var cubo:GameObject;
var boton: GameObject; //Esta creado como un Button no se si es GameObject
private var playerNextTocube = false;
function Start () {
}
function Update () {
if( TouchPhase.Began && playerNextTocube == true) //TouchPhase.Began he leido que es cuando apretas la pantalla
{
DesaparecerCubo();
}
}
function OnTriggerEnter (theCollider : Collider)
{
if (theCollider.tag == "Player")
{
playerNextTocube = true;
}
}
function OnTriggerExit (theCollider : Collider)
{
if (theCollider.tag == "Player")
{
playerNextTocube = false;
}
}
function DesaparecerCubo()
{
cubo.active = false;
}
Pero mi idea es que cuando aprete el botón entre dentro de la condición if, el problema es que no sé como traducir el pseudocódigo "Sí apreto el botón entrar en la condición" Supuestamente TouchPhase.Began haría el tema apretar por lo tanto sé decir if (TouchPhase.Began .... y falta decir el botón....)
Pues basicamente pones la funcion OnMouseDown() esta la adjuntas al objeto donde debes clickear(puerta) y dentro de la misma pones que haga algo ""
function OnMouseDown(){
//do something
}
debe tener un collider la puerta para que detecte la colisión, lo que no sé es que si funcionará en android solo lo probé en PC.
Cita de: infotronica date=1488558262Muy buenas, actualmente tengo un problema cuando intento construir un juego para Android, para hacerlo funcionar he seguido un vídeo de Youtube en el que lo explica muy bien.
He descargado Android Studio e instalado (para SDK)
He descargado Java e instalado(para JDK)
He descargado android ndk.
Después de eso he ido hacia la pestaña Edit/preferences, y en external tools he puesto las carpetas raíz donde se encuentra cada uno el primero corresponda a SDK el segundo a JDK y el tercero a NDK. (Adjunto imagen para demostrarlo)
Después de tener esto he ido a build settings y aquí he cambiado de plataforma para tener Android.
Ahora ya debería de estar todo listo para hacerlo funcionar.. pues cuando le doy a construir me salta una ventana de error (adjunto imagen)
Por último os dejo los errores que me aparecen en consola:
Espero que puedan ayudarme, un saludo y gracias!
el problema ahi fue el ultimo build-tools del sdk de android traia errores por eso te salia que no podia listar los target platforms no era un problema de unity era del sdk
Cita de: moyinzunza date=1489771427el problema ahi fue el ultimo build-tools del sdk de android traia errores por eso te salia que no podia listar los target platforms no era un problema de unity era del sdk
Perfecto moyinzunza gracias.
Por cierto, si controlas de Android podrías pasarte por este link:
Que llevo con esa duda varios días y no logro hacerlo funcionar, el caso es que tengo un botón puesto y quiero que al apretar dicho botón en mi dispositivo android, cuando esté dentro del trigger desaparezca, lo único que me falta es como darle la orden que diga : "si pulso el boton"..
Gracias un saludo