Jump to content
UnitySpain

Recommended Posts

Hola, bueno voy al grano me canse de hacer post, haber tengo mi codigo hago algo, pasa lo que programe, lo hago en otro gameobject el mismo codigo, todo exactamente igual, no pasa nada.... que pasa?????????????????????????????

Miren... en el video no mostre, pero son dos gameobject completamente IGUALES (los platforms con el raycast azul son iguales mismo script todo menos el nombre pero no afecta..)

No le den Bola al Debug "StopSlow" es otra cosa aparte.

 

 

... La puta madre....

Codigo maldito:

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

public class FinishSlow : MonoBehaviour {

	public enum RaycastState {Left, Right, Forward, Back, stopSlow};
	public RaycastState m_state;
	private GameObject target;
	private Player_Movement m_target;
	private const float lenghtRay = 0.45f;
	private const float rayDistance = 0.3f;
	private const float slowMovePeriod = 2.5f;

	private void Start () {
		target = GameObject.Find("Player");
		m_target = target.GetComponent<Player_Movement>();
	}
	
	private void Update () {
		DrawRaycast();
	}

	private void DrawRaycast() {
		switch (m_state) {
			case RaycastState.Right:
				if (Physics.Raycast(new Ray(
					transform.position + Vector3.right * lenghtRay, Vector3.up), 
					rayDistance))
				{
					if (m_target.Ratio == 1) {
						if (m_target.X == -1)
							StartCoroutine("_SlowX");
						else if (m_target.X == 1)
							m_target.MovePeriod = 0.31f;
					}
				}
					break;
			case RaycastState.Left:
				if (Physics.Raycast(new Ray(
					transform.position + Vector3.left * lenghtRay, Vector3.up), 
					rayDistance))
				{
					if (m_target.Ratio == 1) {
						if (m_target.X == 1)
							StartCoroutine("_SlowX");
						else if (m_target.X == -1)
							m_target.MovePeriod = 0.31f;
					}
				}
				break;
			default:
				break;
		}
	}
  
  	private IEnumerator _SlowX() {
		m_target.MovePeriod = slowMovePeriod;
		yield return m_target.MovePeriod;
		m_state = RaycastState.stopSlow;
	}
  
  	private void OnDrawGizmos() {
		Gizmos.color = Color.blue;
		switch (m_state) {
			case RaycastState.Right:
				Gizmos.DrawRay(transform.position + Vector3.right * 0.45f, Vector3.up * 0.3f);
				break;
			case RaycastState.Left:
				Gizmos.DrawRay(transform.position + Vector3.left * 0.45f, Vector3.up * 0.3f);
				break;
        }
    }

 

En mi ejemplo del video, uso este script en los dos gameobject que muestro(los que emiten el raycast azul) uso el enum Left, igualito igualitoo, pero como pueden ver uno me hace caso... y otro no....... que pasa????????????

Alguna solucion? algo que estoy haciendo mal, que esta pasando? Se sobreescribe algo? nose nose estoy hace 4 horas con este codigo y no le encuentro la vuelta..... funciona, no funciona... que pasa?

Saludos..

Edited by enelmenu

Share this post


Link to post
Share on other sites

HOla, hasta ahora no lei nada pero cuando lei tu tag me dio mucha gracia y quise escribir algo jajaj "inexplicable", no seas tan dramatico por algo será ja. Bueno ahora a leer el post ...

Procesando ...

Primero que todo, cual de los dos esta bien, vos queres que termine slow en los casos donde la plataforma tenga el ray azul no? porque en unas lineas tenes esto:

if (m_target.Ratio == 1) {
  if (m_target.X == -1)
  	StartCoroutine("_SlowX");
  else if (m_target.X == 1)
  	m_target.MovePeriod = 0.31f;
  }

Esta bien eso? No se si tendra que ver pero estas evaluando el X del Player, por eso pregunto. y que es X (mayuscula)?

 

Share this post


Link to post
Share on other sites
Ahora, lightbug said:

"inexplicable", no seas tan dramatico por algo será

JAJAJA posta es rarisimo 

Ahora, lightbug said:

estas evaluando el X del Player, por eso pregunto. y que es X (mayuscula)?

Es basicamente un get de mi GetAxisRaw Vertical, que toma -1  1 es un GetAxis comun pero con el Raw lo hace sin interpolar

// Code player move

private float x;

public float X {
	get {return x;}
}

private void Update() {
	// devuelve -1 1 depende su direccion
	x = Input.GetAxisRaw ("Vertical");
}

// Code Slow

private Player_Movement m_target;
// y listo de ahi viene el m_target.X

Lo escribi sobre la marcha para que entiendas, esta igual en mi codigo.

 

Ahora, lightbug said:

Primero que todo, cual de los dos esta bien,

Aca donde nace el "Inexplicable" JAJA los dos GameObjects tienen el mismo script... fijate al principio del post que aclaro son dos iguales...

No entiendo, probalo si queres y va a ver, proba haciendo un slow o algun cambio en una interlopacion, o alguna boludes, que cuando se cumpla la condicion con el Raycast enable lo haga.

Como que no alcanza a actualizar los frames pero nose nose, ahora estoy armando un armario en casa jajaja asi que cuando termine me pongo bien, pero principalmente publique el post para saber si puede haber cambios cuando pones el script en dos gameObject nose, no deberia... pero es raro

Share this post


Link to post
Share on other sites
8 hours ago, enelmenu said:

Lo escribi sobre la marcha para que entiendas, esta igual en mi codigo.

Ah Ok pero porque no usas directamente el Input.GetAxisRaw... ? viste como de entrada interprete que era algun x relacionado a lo espacial, cuando era una input, si vas a probar que todo ande te recomiendo meter el Input derecho, si mas adelante queres empezar a disfrazar este tipo de cuestiones lo podes hacer (aunque no lo creo necesario pero va en como te resulte mas comodo). en definitiva no importa de momento.

 

8 hours ago, enelmenu said:

los dos GameObjects tienen el mismo script...

La diferencia que se me ocurre puede ser que lso dos tengan el mismo script pero distinta Layer quizas? recorda que el tema de colisiones/cast depende mucho de las layers, fijate que esten habilitadas Player vs Plataforma y que las dos tengan layer plataforma, si es asi otro posible problema sea algo puramente del escenario, como algun trigger dando vuelta que impide que el ray azul funcione, es mas quizas esta andando pero funciona justo cuando ya caes porque arriba tenia otro trigger, me ha pasado mucho, por eso tengo los triggers en otra capa separada.

SI nada funciona limpia la escena pone varias plataformas, una al lado de la otra,fijate si anda en la 1 y en el resto no, o en cualquier otra, o si anda en todas menos en la 3, que se yo, asi vas debugueando a lo villa si es que se tratara de un problema puramente de la escena y hasta quizas encuentres algo en el codigo.

Tambien, que pasa en el segundo 39 del video? porque cuando venis hacia la camara va des -- pa - -cito? es por el mismo ray (el alejado a la camara)?

 

Share this post


Link to post
Share on other sites
Ahora, lightbug said:

porque no usas directamente el Input.GetAxisRaw... ?

Omaigaa no se me había ocurrido :7_sweat_smile: probablemente funcione con eso

Ahora, lightbug said:

limpia la escena  debugueando a lo villa

Olvidatee jajajajaj esa la hago siempre. Y pasaba lo mismo

Ahora, lightbug said:

mas adelante queres empezar a disfrazar este tipo de cuestiones

Si, es que de echo, enrrealidad lo probe varias veces sin disfrazar nada, incluso sin la iteracion del Enumerator, pero bueno, en el video quise que quede prolijo el codigo y por eso lo hice asi para q se entienda, bueno termino unas cosas y me pongo con eso y te aviso!

Ahora, lightbug said:

Tambien, que pasa en el segundo 39 del video? porque cuando venis hacia la camara va des -- pa - -cito? es por el mismo ray (el alejado a la camara)?

Eso lo programe asi, si te fijas, le doy un slow a mi movimiento, y dsp cambio el estado para eliminar el switch del raycast, solo necesito hacerlo lento para adentro del cubo Blanco fuerte del centro jaja, ua vez q empieza ese slow mi camara se acerca y meto un alto final al lvl y cambio de escena para pasar de lvl, osea una vez q mete el slow no es necesario volver a mi anterior estado.

Share this post


Link to post
Share on other sites
7 hours ago, enelmenu said:

Omaigaa no se me había ocurrido :7_sweat_smile: probablemente funcione con eso

Con eso va a funcionar lo de la entrada jaja no se si se te va a resolver el problema

Share this post


Link to post
Share on other sites
Ahora, lightbug said:

va a funcionar lo de la entrada

Sisi con eso ya creo q lo soluciono, necesito una entrada limpia, lo mas probable q no deje actuar bien mi codigo sea el plato de fideos que hice con ese getter X jajajaj

Share this post


Link to post
Share on other sites
7 hours ago, enelmenu said:

Sisi con eso ya creo q lo soluciono, necesito una entrada limpia, lo mas probable q no deje actuar bien mi codigo sea el plato de fideos que hice con ese getter X jajajaj

Ajaja ok :91_thumbsup:

Share this post


Link to post
Share on other sites

@lightbug Es muy injusto pero funciono con un GetAxisArrow paralelo en mi Script de slow... no me gusta para nada, pero bueno, la verdad sinceramente no entiendo por q no reacciona bien con un getter :35_thinking: pero bueno, asi va bien, seguro no es problema de la corriente del getter, debe ser algo en mi Player_Movement, pero bueno por ahora(para siempre) lo dejo asi :2_grimacing:

Un abrazo enorme juan! :95_v: me fui :134_spy:

Share this post


Link to post
Share on other sites

×
×
  • Create New...