[RESOLVIDO] Como saber se um Transform está se movendo?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como saber se um Transform está se movendo?
Estava fazendo um script para um cubo entra infinitamente ate bater em uma parede, que nem o personagem do jogo Tomb of the mask que tem para mobile, eu consegui fazer usando Rigidbody, mas queria que quando batesse em um outro objeto se tornasse filho, o problema é que o rigidbody so move o cubo em si, o outro objeto permanece estatico, tentei refazer so que desta vez movendo com Transform, utilizando a mesma logica do Rigidbody, so que nao consigo detectar se o transform está se movendo ou nao
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMoviment : MonoBehaviour
{
public bool stop, movendo;
public bool x, y;
public Vector2 input, direction;
public LayerMask ground;
public float timer, time;
private void Update()
{
if (!stop)
{ //Input
if (!movendo) { input = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); } else { input = Vector2.zero; }
timer = time;
if (Mathf.Abs(input.x) > Mathf.Abs(input.y)) {
x = true; print("X maior");
} else if (Mathf.Abs(input.x) < Mathf.Abs(input.y)) {
y = true; print("Y maior");
} else {direction = Vector2.zero; movendo = false; }
//Direção
if (x){
direction.x = Mathf.Sign(input.x);
y = false;
movendo = true;
direction.y = 0;
}
if (y)
{
direction.y = Mathf.Sign(input.y);
x = false;
movendo = true;
direction.x = 0;
}
if (!Physics2D.Raycast(transform.position, direction, 0.7f, ground)) { transform.Translate(direction); } // Movimenta
}
else
{
x = false;
y = false;
timer -= Time.deltaTime;
if(timer <= 0) { stop = false; }
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
stop = true;
}
}
fantastic137- Iniciante
- PONTOS : 1553
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] Como saber se um Transform está se movendo?
fantastic137 escreveu:Na verdade, acabei de conseguir conserta-lo, para que quiser
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMoviment : MonoBehaviour
{
[Header("Control")]
public LayerMask ground;
public float time;
[Header("Private")]
private bool stop, movendo;
private bool x, y;
private float x1, y1, timer;
private Vector2 input, direction;
private void Update()
{
if (!stop)
{
if (!movendo) {
input = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));//Input
} else { input = Vector2.zero; }
//vê em que eixo
timer = time;
if (Mathf.Abs(input.x) > Mathf.Abs(input.y)) {
x = true;
x1 = Mathf.Sign(input.x);
} else if (Mathf.Abs(input.x) < Mathf.Abs(input.y)) {
y = true;
y1 = Mathf.Sign(input.y);
} else {direction = Vector2.zero; movendo = false; }
//Define a direção
if (x){
direction.x = x1;
y = false;
StartCoroutine(mover(0.1f));
direction.y = 0;
}
if (y)
{
direction.y = y1;
x = false;
StartCoroutine(mover(0.1f));
direction.x = 0;
}
//Faz o movimento
if (!Physics2D.Raycast(transform.position, direction, 0.7f, ground)) {
transform.Translate(direction);
}
//Detecta a parede
if (Physics2D.Raycast(transform.position, direction, 0.7f, ground))
{
stop = true;
}
}
else
{
if (Input.GetKeyDown(KeyCode.P)) { transform.parent = null; }// Tira o filho do parente
x = false;
y = false;
movendo = false;
timer -= Time.deltaTime;
if(timer <= 0) { stop = false; }
}
}
IEnumerator mover(float waitTime)
{
yield return new WaitForSeconds(waitTime);
movendo = true;
}
private void OnDrawGizmos()
{
Gizmos.color = Color.blue;
Gizmos.DrawLine(transform.position, new Vector3(transform.position.x +0.7f, transform.position.y, transform.position.z));
}
fantastic137- Iniciante
- PONTOS : 1553
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como saber se o jogador esta vendo um certo objeto?
» [RESOLVIDO] Visual Studio - Como saber onde um método está sendo usado
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
» [RESOLVIDO] Como saber se um objeto existe ou não na cena
» [RESOLVIDO] Unity - Como Saber Se Botão Foi Clicado?
» [RESOLVIDO] Visual Studio - Como saber onde um método está sendo usado
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
» [RESOLVIDO] Como saber se um objeto existe ou não na cena
» [RESOLVIDO] Unity - Como Saber Se Botão Foi Clicado?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos