Menú

Mostrar Mensajes

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.

Mostrar Mensajes Menú

Mensajes - Alex

#61
General (Antiguo) / Subir una url desde una app externa
Diciembre 27, 2018, 04:23:43 PM
buenas, alguien sabe como puedo hacer para que una Dirección web se actualice a otra sin necesidad de estar editando el código en el editor de unity? algo como esto: https://assetstore.unity.com/packages/tools/gui/external-control-panel-125598
 
se usa una conexión entre el juego exportado que recibe y otra app que le envía la dirección web mediante el uso de internet. (en la app subir el www  y que el juego lo lea y lo use)
 
me encontré este tutorial: https://singletechgames.com/2015/06/29/tutorial-de-unity-5-x-cargar-una-imagen-desde-internet-y-un-link-para-hacer-cross-promotion-entre-juegos/          pero la dirección tiene que cambiarse desde el editor.
 
alguna ayuda? o alguna referencia de donde buscarlo?
#62
General (Antiguo) / Simular tecla por script
Diciembre 09, 2018, 12:18:43 AM
Buenas! Alguien sabe como simular una tecla por script? Algo como para usarlo en botones (presiono un boton y funciona al igual que estar presionando una tecla) o alguna forma de usar los inputs pero usando botones?
 
Específicamente el horizontal y vertical.
#63
Scripting / Cámara Multijugador.
Diciembre 05, 2018, 11:05:12 PM
Entonces que tendría que cambiar?
 
Poner el:
 
If(isLocalPlayer)?
 
Para que cambie a una afirmación en vez de una negación?
#64
Scripting / Cámara Multijugador.
Diciembre 05, 2018, 06:27:19 PM
Alguien puede ayudarme! Estoy con esto ya casi 4 dias y no puedo lograr que la cámara este en cada jugador!
 
Este es mi script de la cámara: 
 
(Disculpen por no ponerlo en <>)
 

using UnityEngine;
using System.Collections;
public class SmoothCameraFollow : MonoBehaviour {
    static public Transform target;
    public float distance = 4.0f;
    public float height = 1.0f;
    public float smoothlag = 0.2f;
    public float maxSpeed = 10.0f;
    public float snapLag =  0.3f;
       public float clampHeadPositionScreenSpace= 0.75f;
       LayerMask lineOfSightMask = 0;
       Vector3 headOffset= Vector3.zero;
       Vector3 centerOffset = Vector3.zero;
 
       bool isSnapping = false;
       Vector3 velocity = Vector3.zero;
       float targetHeight = 10000.0f;
 
       void Apply(Transform dummyTarget, Vector3 dummyCenter){
Vector3 targetCenter = target.position+ centerOffset;
Vector3 targetHead = target.position + headOffset;
targetHeight = targetCenter.y+height;
if (Input.GetButton("Fire2")&& !isSnapping){
    velocity = Vector3.zero;
    isSnapping = true;
}
 if (isSnapping){  
 ApplySnapping(targetCenter);
}
else
{
    ApplyPositionDamping (new Vector3(targetCenter.x, targetHeight, targetCenter.z));
}
setUpRotation(targetCenter, targetHead);
       }
       void LateUpdate(){
           if (target)
           Apply(null,Vector3.zero);
       }
       void ApplySnapping(Vector3 targetCenter){
           Vector3 position =transform.position;
           Vector3 offset= position - targetCenter;
           offset.y = 0;
           float currentDistance = offset.magnitude;
           float targetAngle= target.eulerAngles.y;
           float currentAngle = transform.eulerAngles.y;
           currentAngle = Mathf.SmoothDampAngle(currentAngle,targetAngle,ref velocity.x, snapLag);
currentDistance = Mathf.SmoothDamp(currentDistance,distance,ref velocity.z, snapLag);
Vector3 newPosition = targetCenter;
newPosition += Quaternion.Euler(0, currentAngle,0) * Vector3.back * currentDistance;
newPosition.y = Mathf.SmoothDamp (position.y, targetCenter.y + height, ref velocity.y, smoothlag,maxSpeed);
newPosition += AdjustLineOfSight(newPosition, targetCenter);
transform.position = newPosition;
if (AngleDistance(currentAngle, targetAngle)> 3.0){
    isSnapping= false;
    velocity= Vector3.zero;
}     
       }
       Vector3 AdjustLineOfSight(Vector3 newPosition,Vector3 target){
           RaycastHit hit;
           if(Physics.Linecast(target, newPosition, out hit, lineOfSightMask.value)){
               velocity = Vector3.zero;
               return hit.point;
           }
           return newPosition;
       }
void ApplyPositionDamping(Vector3 targetCenter){
    Vector3 position = transform.position;
    Vector3 offset = position - targetCenter;
    offset.y = 0;
    Vector3 newTargetPos =offset.normalized * distance + targetCenter;
    Vector3 newPosition;
newPosition.x = Mathf.SmoothDamp (position.x, newTargetPos.x, ref velocity.x,smoothlag, maxSpeed);
newPosition.z = Mathf.SmoothDamp (position.z, newTargetPos.z, ref velocity.z,smoothlag, maxSpeed);
newPosition.y = Mathf.SmoothDamp (position.y, targetCenter.y, ref velocity.y,smoothlag, maxSpeed);
newPosition = AdjustLineOfSight(newPosition,targetCenter);
transform.position = newPosition;
}
void setUpRotation(Vector3 centerPos,Vector3 headPos){
    Vector3 cameraPos = transform.position;
    Vector3 offsetToCenter = centerPos - cameraPos;
    Quaternion yRotation = Quaternion.LookRotation(new Vector3(offsetToCenter.x, 0.0f, offsetToCenter.z));
Vector3 relativeOffset = Vector3.forward* distance + Vector3.down * height;
transform.rotation = yRotation * Quaternion.LookRotation(relativeOffset);
Ray centerRay = this.GetComponent<Camera>().ViewportPointToRay(new Vector3(.5f, 0.5f, 1f));
Ray topRay = this.GetComponent<Camera>().ViewportPointToRay(new Vector3(.5f, clampHeadPositionScreenSpace,1.0f));
Vector3 centerRayPos = centerRay.GetPoint(distance);
Vector3 topRayPos = topRay.GetPoint(distance);
float centerToTopAngle = Vector3.Angle(centerRay.direction,topRay.direction);
float heightToAngle = centerToTopAngle/(centerRayPos.y - topRayPos.y);
float extraLookAngle = heightToAngle * (centerRayPos.y - topRayPos.y);
if(extraLookAngle < centerToTopAngle){
    extraLookAngle = 0;
}
else{
    extraLookAngle = extraLookAngle - centerToTopAngle;
    transform.rotation *= Quaternion.Euler(-extraLookAngle,0,0);
}
}
float AngleDistance (float a, float b){
    a = Mathf.Repeat(a, 360);
    b= Mathf.Repeat(b,360);
    return Mathf.Abs(b-a);
}
Vector3 GetCenterOffset(){
    return centerOffset;
}
void setTarget (Transform t){
    target = t;
}
}

 
La cámara funciona bien, sigue al jugador y lo toma como target con este script:
 
 
 

public class Target : NetworkBehaviour
{
 public override void OnStartLocalPlayer(){
    if (!isLocalPlayer){
        GetComponent<VehicleParent>().gameObject.SetActive(true);
      SmoothCameraFollow.target =this.transform;
    }
}
}

 
(El vehicleparent es el código de control del carro)
 
 
 
Si inicio el multijugador solo, todo funciona bien, tengo una cámara en la escena de juego multijugador, cuando entro de 2 (editor y celular) la cámara toma como target al primer carro, y deja al otro sin cámara, cuando veo la jerarquía en el editor, uno de los carros es el que tiene la cámara y si muevo el auto, en la pantalla del celular no me muestra nada, solo una imagen estática de mi jugador sin poder moverlo (es como cuando sale el mensaje de "not is camera rendering" pero en el celular no sale ese mensaje, solo se muestra estático, en cambio en el editor si puedo ver que los dos  auto se mueven, alguien sabe como puedo solucionarlo? (El problema es que la única camara de mi escena solo se muestra a una pantalla, no a cada una individualmente como debería ser) porfavor ayuda con esto.
 
 
 
 
 
 
#65
Scripting / Cámara Multijugador.
Diciembre 03, 2018, 08:16:23 PM
Gracias @juanma_teso estaba un buen rato con esto y sí, recordé que cada jugador crea en su escena su propia cámara, oo que hice fue poner una cámara general en la escena de juego multijugador, y dentro de ella puse el codigo de seguir a mi jugador usando target, ahora tengo un nuevo problema y es que mi jugador se puede instanciar en diferentes lugares y la camara se queda en x,z en la misma posición en que la deje, quiero que la camara al iniciar la escena se mueva a la posición del jugador (claro que debe estar almenos en 0,1,4 x,y,z) he usado un script que convierte a la cámara en hijo de mi jugador y otro script en la cámara que hace mover a esta a una posición un poco alejada de mi jugador, todo bien con eso pero tengo un error con otra función de la cámara, y es que necesito evitar convertir a mi cámara en hijo de mi jugador, mi cámara trae la opción de target la cual hace posible que mi cámara siga a mi jugador, alguien podria decirme como puedo usar esa función target que almacena a mí jugador para que la cámara se mueva hasta mi jugador? Estoy buscando y he encontrado el transform.position y el offset, pueden ayudarme?
#66
Scripting / Cámara Multijugador.
Diciembre 02, 2018, 04:17:15 PM
La solución que le encuentro es: hacer una variable que defina la cámara a mi jugador como dueño de esta y si en algún momento muere, las otras cámaras tengan algo que le  impida pasar a otro personaje, que desactive la cámara, no cambiando de jugador como lo hace, tengo entendido eso pero no se como desarrollarla.
#67
Scripting / Cámara Multijugador.
Diciembre 02, 2018, 01:53:06 PM
tengo un problema, ya tengo el juego en multijugador, entra bien, pero cuando se crean los personajes, todas las cámaras se pasan al jugador nuevo, (entro a una sala normal, pero cuando otro jugador entra, mi pantalla pasa a ese jugador, es como si mi personaje ya no valiera, es lo mismo si creo varios, la cámara se actualiza y paso a manejar el player de otro) cuando desactivo el jugador nuevo, mi cámara vuelve a mi personaje y cuando vuelvo a activarlo, se regresa al nuevo (esto sucede para los dos jugadores) alguna ayuda?
#68
General (Antiguo) / Selección Del Personaje Multijugador
Noviembre 28, 2018, 01:53:06 PM
@juanma_teso recientemente se me ocurrió una idea, como dices, podría cambiar al jugador después de instanciarlo, claro en mi caso estaría haciendo que entren al servidor primero y luego, lo que se instancia no es el jugador, si no una lista y ya de esa lista, el usuario estaría eligiendo a su personaje. Crees que es algo conveniente o bueno?
#69
General (Antiguo) / Selección Del Personaje Multijugador
Noviembre 27, 2018, 02:34:18 PM
Hasta ahora solo he podido manejar el modo multijugador de unity networking con solo un jugador, (este viene por defecto y solo deja usar uno), mi duda viene en si puedo hacer que sea de 2 personajes a más, algo como una selección de personaje antes de entrar a la escena de juego (mientras se esta en el lobby), eh buscado algo referente y me encontré con lo que es el Picked pero como el codigo de unity networking no se puede editar, no lo eh podido lograr, queria preguntar si hay alguna manera de hacer eso y como la casilla de jugador es solo una, cuando elija al jugador se pase automaticamente a esa casilla. 
 
alguna ayuda?
#70
Gracias! ya logre instanciarlos, pero cuando ya están en el juego no interactuan, por ejemplo cuando las desactivo desde el mismo script, se desactivan pero los de la carpeta, no los que fueron instanciados el la escena, alguna idea de lo que pasa?
#71
Alguien me puede ayudar? estoy intentado hacer que todos mis gameobjects que están dentro de [] se importen a mi escena, para eso uso algo como esto:
 

public GameObject[] regalos;
public void start
{
instantiate (regalos[0], transform.position, transform.rotation);
}

 
el problema es que solo se importa el objeto numero 0, alguna forma de importar todos a la vez?
 
el otro problema es que, cuando quiero desactivar en algún momento esos regalos, se desactivan en la carpeta del proyecto, no dentro del juego, los regalos están puestos en las casillas de [] (sea regalo 0,1,2) opino que desde la carpeta de proyecto al parecer cuando son instanciados pierden relación con los que están en la "jerarquía" y los de "Proyecto" parece como si fueran diferentes, yo quiero que tengan relación los dos, intente usar el resources.load pero no logre nada, alguien puede explicarme un poco como puedo solucionarlo?
#72
@francoe1 intentaré con el maxhealth nuevamente, el Pnl de vida ya trae su canvas y se instancia sin problemas, quiero instanciar el Panel porque las escenas donde la utilizo estan separadas, no es conveniente tener un canvas para todas las escenas y el player para hacer que se pueda poner la barra de vida en su casilla necesita que los dos objetos esten o bien en la jerarquía o en los assets (en mi caso en el resourses)
#73
@lightbug he vuelto a hacer el código un poco más simple siguiendo tu consejo con el fillAmount
 

public class PlayerHealth : NetworkBehaviour {
 
public float health = 120f;
public Image HealthBar;
void Start () {
   HealthBar.fillAmount = health;
   
GameObject instance = Instantiate(Resources.Load("Pnl_Vida", typeof(GameObject))) as GameObject;
}
void Update()
{
   if(!isLocalPlayer)
   return;
   if(!IsAlive())   
   {
      //estoy muerto
      GameObject instance = Instantiate(Resources.Load("Pnl_Muerte", typeof(GameObject))) as GameObject;
      gameObject.SetActive(false);
      
   }
}
public void AddHealth( float amount)
{
   health = health + amount+ amount; //si amount negativo, decremento vida  20  -10  10 // cada amount es + 10 de vida
   if(health >= 100)
   {
      health = 100;
   }
   else if(health <= 0f)
   {
      health = 0f;
   }
}
public bool IsAlive()
{
   if(health <= 0f)
   {
      return false;
   }
   else
      return true;
}
public void GetHit(float amount)
{
   health -= amount;
if(health <= 0) health = 0;
HealthBar.fillAmount = health;
 
}
}

 
el problema es que ahora al instanciar el Pnl_Vida  cuando mi jugador es atacado, su fillamount no se escala  como debe ser, en su script del carro si se reduce de 120 a menos(ignora el 120 de vida tambien puede ser 100) creo que cuando instancio mi panel en el editor no se relaciona con el healthbarr del script o se queda independiente, alguna ayuda?
#74
Buenas!
 
estaba terminando mi sistema de vida y me tope con el problema de que al cargar mi barra de vida desde resourses cuando mi jugador ya no tiene vida la barra se escala a 0 (de 100% a 0%) el problema cae en que al volver a iniciar el juego la barra se guardo en 0% y no del 100% como debería ser alguien sabe a que se debe? tal vez omití algo
 
<
 
Pnl_Vida es el canvas
 
healthBar es el prefab de la barra
 


   GameObject instance = Instantiate(Resources.Load("Pnl_Vida", typeof(GameObject))) as GameObject;


    

 


   private void HealthRender(float maxHealth)


       {


           float _health = health/maxHealth;


           healthBar.rectTransform.localScale = new Vector3(_health,


               healthBar.rectTransform.localScale.y,healthBar.rectTransform.localScale.z);


       }

 
>
 
psdt: uso el multijugador de unity así que ya tiene el (isLocalPlayer) el problema es que luego de usarlo una vez a la siguiente ya no hay barra al 100%
 
si alguien tiene la respuesta se lo agradecería!
#75
General (Antiguo) / Error multiplayer
Septiembre 07, 2018, 03:29:29 AM
No entiendo muy bien el problema pero puedes revisar si tienes a los dos jugadores diferenciados y si se llaman de una variable revisa si tienes identificado a los dos jugadores en el script