[RESOLVIDO] Problema com C# e Rigidbody
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Problema com C# e Rigidbody
Boa tarde, estou fazendo um projeto em que tenho um objeto e ele precisa utilizar o Use Gravity do Rigidbody através de script, o qual é ativado por botões. O botão do Play está funcionando, mas por algum motivo depois que ele inicia não consigo fazer com que o botão Pause funcione. Alguém poderia me ajudar com isso? Abaixo segue o Script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class mostrarAltura : MonoBehaviour
{
public Text altura;
public Text tempo;
public Text velocidade;
public bool play = true;
private float vel = 0;
private float t = 0;
private float grav = 9.8f;
public Rigidbody rb;
public Button pause;
public Button start;
void Start()
{
pause.onClick = new Button.ButtonClickedEvent();
start.onClick = new Button.ButtonClickedEvent();
pause.onClick.AddListener(() => PauseButton());
start.onClick.AddListener(() => StartButton());
rb = GetComponent<Rigidbody>();
rb.useGravity = false;
}
public void PauseButton()
{
play = false;
rb.useGravity = false;
}
public void StartButton()
{
play = true;
rb.useGravity = true;
}
void Update()
{
if((transform.position.y > 0.5) && (rb.useGravity == true)){
if(play == true){
t += Time.deltaTime;
}
vel = t * grav;
}
velocidade.text = vel.ToString("F2");
tempo.text = t.ToString("F2");
altura.text = transform.position.y.ToString("F2");
}
}
amanda.ilg- Iniciante
- PONTOS : 1295
REPUTAÇÃO : 3
Respeito as regras :
Re: [RESOLVIDO] Problema com C# e Rigidbody
Não deveria ser:
?
- Código:
pause.onClick.AddListener(PauseButton);
?
Re: [RESOLVIDO] Problema com C# e Rigidbody
MayLeone escreveu:Não deveria ser:
- Código:
pause.onClick.AddListener(PauseButton);
?
Olá, infelizmente assim também não funciona. O problema é que ele não desativa o Rigidbody, pois ele entra no void pauseButton e atribui false à variável play. Porém ele não desativa o Rigidbody. Saberia me ajudar?
amanda.ilg- Iniciante
- PONTOS : 1295
REPUTAÇÃO : 3
Respeito as regras :
Re: [RESOLVIDO] Problema com C# e Rigidbody
Essa variavel play pelo contexto aparentemente é inutil, pq você está verificando o estado no primeiro if, vc ta meio que perguntando duas vezes se a gravidade está ativa;amanda.ilg escreveu:MayLeone escreveu:Não deveria ser:
- Código:
pause.onClick.AddListener(PauseButton);
?
Olá, infelizmente assim também não funciona. O problema é que ele não desativa o Rigidbody, pois ele entra no void pauseButton e atribui false à variável play. Porém ele não desativa o Rigidbody. Saberia me ajudar?
Pra saber se o useGravity está ativo ou não, digite no seu código: Debug.log(rb.useGravity);
- Código:
public void PauseButton()
{
play = false;
rb.useGravity = false;
Debug.log(rb.useGravity);
}
public void StartButton()
{
play = true;
rb.useGravity = true;
Debug.log(rb.useGravity);
}
O que você quer fazer no caso seria deixar o objeto estático na tela ? se for isso use rb.isKinematic em vez de desativar a gravidade
- Código:
public void PauseButton()
{
play = false;
rb.isKinematic = true;
Debug.log(rb.useGravity);
}
public void StartButton()
{
play = true;
rb.isKinematic = false;
Debug.log(rb.useGravity);
}
http://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html
Re: [RESOLVIDO] Problema com C# e Rigidbody
PauloFR escreveu:Essa variavel play pelo contexto aparentemente é inutil, pq você está verificando o estado no primeiro if, vc ta meio que perguntando duas vezes se a gravidade está ativa;amanda.ilg escreveu:MayLeone escreveu:Não deveria ser:
- Código:
pause.onClick.AddListener(PauseButton);
?
Olá, infelizmente assim também não funciona. O problema é que ele não desativa o Rigidbody, pois ele entra no void pauseButton e atribui false à variável play. Porém ele não desativa o Rigidbody. Saberia me ajudar?
Pra saber se o useGravity está ativo ou não, digite no seu código: Debug.log(rb.useGravity);Feito isso irá aparecer no console, ou você simplesmente da executar o projeto e olha no inspetor se foi desativado ou não. mas pelo que você disse se realmente play fica positivo, então o problema é na lógica, não no ativamento dos botões.
- Código:
public void PauseButton()
{
play = false;
rb.useGravity = false;
Debug.log(rb.useGravity);
}
public void StartButton()
{
play = true;
rb.useGravity = true;
Debug.log(rb.useGravity);
}
O que você quer fazer no caso seria deixar o objeto estático na tela ? se for isso use rb.isKinematic em vez de desativar a gravidade
- Código:
public void PauseButton()
{
play = false;
rb.isKinematic = true;
Debug.log(rb.useGravity);
}
public void StartButton()
{
play = true;
rb.isKinematic = false;
Debug.log(rb.useGravity);
}
http://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html
Consegui! Muito obrigada! O que precisava era do isKinematic. Ajudou muito!
amanda.ilg- Iniciante
- PONTOS : 1295
REPUTAÇÃO : 3
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Movimentação RigidBody 2D visto de cima
» [RESOLVIDO] Rigidbody: Alterar drag dentro do jogo
» [RESOLVIDO] problemas com rigidbody
» [RESOLVIDO] Poblema com Rigidbody
» [RESOLVIDO] Movimento de BoxCollider com RigidBody
» [RESOLVIDO] Rigidbody: Alterar drag dentro do jogo
» [RESOLVIDO] problemas com rigidbody
» [RESOLVIDO] Poblema com Rigidbody
» [RESOLVIDO] Movimento de BoxCollider com RigidBody
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos