[DÚVIDA] Dúvida sobre script e rigidbody
2 participantes
Página 1 de 1
[DÚVIDA] Dúvida sobre script e rigidbody
- Código:
using UnityEngine;
using System.Collections;
public class NavinhaBehaviour : MonoBehaviour
{
public float maxSpeed;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
rb.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
}
}
Galera, se alguem puder me ajudar eu agradeço, eu coloquei esse script aqui no meu personagem, o probelma é que elta ta muito lendo. Já mexi na variavel de velocidade e não teve diferença nenhuma, não sei dizer, porque sou novato na unity, mas talvez o problema esteja no rigidbody, mas como dize, sou novato então não entendo muito. Desde já, obrigado
kalel013- Avançado
- PONTOS : 3098
REPUTAÇÃO : 30
Idade : 24
Áreas de atuação : Artista 3d (blender), iniciante em programação (python e PHP), iniciante em arte 2d (InkScape)
Respeito as regras :
Re: [DÚVIDA] Dúvida sobre script e rigidbody
Jovem, aconselho estudar C#, pois é bem difícil "ir adiante" na Unity sem saber programação. Vou explicar o seu problema citando linha por linha do script:
rb.velocity controla a velocidade do seu rigidbody... como ele é um rigidbody 2D, ele só possui 2 eixos de velocidade e não 3... o Rigidbody2D possui apenas o eixo X(horizontal) e o eixo Y(vertical).
No comando dentro da void FixedUpdate, você está passando para o eixo X do seu rigidbody2D o Input Horizontal, e para o eixo Y, você está passando o Input vertical.
O problema ocorre por que você não está multiplicando estes Inputs pela velocidade (variável "maxSpeed").
Input Vertical e Horizontal são variáveis que vão apenas de 0 a 1, (0 quando não pressiona e 1 quando pressiona). Então, para aumentar esta velocidade, você tem que multiplicar este input por algo, que seria aquela variável "maxSpeed"
No fim das contas, fica +/- assim:
- Código:
public float maxSpeed;
- Código:
private Rigidbody2D rb;
- Código:
void Start(){
rb = GetComponent<Rigidbody2D>();
}
- Código:
void FixedUpdate(){
rb.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
}
rb.velocity controla a velocidade do seu rigidbody... como ele é um rigidbody 2D, ele só possui 2 eixos de velocidade e não 3... o Rigidbody2D possui apenas o eixo X(horizontal) e o eixo Y(vertical).
No comando dentro da void FixedUpdate, você está passando para o eixo X do seu rigidbody2D o Input Horizontal, e para o eixo Y, você está passando o Input vertical.
O problema ocorre por que você não está multiplicando estes Inputs pela velocidade (variável "maxSpeed").
Input Vertical e Horizontal são variáveis que vão apenas de 0 a 1, (0 quando não pressiona e 1 quando pressiona). Então, para aumentar esta velocidade, você tem que multiplicar este input por algo, que seria aquela variável "maxSpeed"
No fim das contas, fica +/- assim:
- Código:
using UnityEngine;
using System.Collections;
public class NavinhaBehaviour : MonoBehaviour{
public float velocidade = 10;
private Rigidbody2D rb;
void Start(){
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate(){
rb.velocity = new Vector2(Input.GetAxis("Horizontal")*velocidade, Input.GetAxis("Vertical")*velocidade);
}
}
Re: [DÚVIDA] Dúvida sobre script e rigidbody
Vlw marcos, eu to acompanhando a série de C# e já sei algumas coisa, o problema é que eu só sei movimentar usando o transform.translate e aqui no fórum disseram que não é muito bom usar eler e que é melhor o rigidbody.velocity(que eu ainda não sei usa), dae por isso eu tava me complicando. No inicio da série de c# vc falou que já tem um cronograma pras aulas, vc teria a intenção de soltar no futuro uma aula ensinando sobre os componentes do rigidbody na programção como o rigidbody.velocity ou o rigidbody.addforce?MarcosSchultz escreveu:Jovem, aconselho estudar C#, pois é bem difícil "ir adiante" na Unity sem saber programação. Vou explicar o seu problema citando linha por linha do script:esta variável "maxSpeed" é uma variável do tipo float(números com virgula), que você pode mudar o valor, mas nesta parte você está apenas declarando ela, sem aplica-la em nada.
- Código:
public float maxSpeed;
Aqui você declara uma variável do tipo Rigidbody2D, para poder setar o componente Rigidbody no Start em vez de ficar buscando ele no Update o tempo todo... isto deixará o script mais leve.
- Código:
private Rigidbody2D rb;
Esta é a void Start... ela é chamada 1 vez apenas, no começo do jogo. Nela, você está setando o Rigidbody2D na variável que você criou para deixar o script mais leve
- Código:
void Start(){
rb = GetComponent<Rigidbody2D>();
}Aqui você tem a void "FixedUpdate", que é bem parecida com a void "Update". Esta void"FixedUpdate" é chamada várias vezes, o tempo todo... em média, umas 30 vezes por segundo... Nela você está passando uma velocidade ao seu Rigidbody, da seguinte maneira
- Código:
void FixedUpdate(){
rb.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
}
rb.velocity controla a velocidade do seu rigidbody... como ele é um rigidbody 2D, ele só possui 2 eixos de velocidade e não 3... o Rigidbody2D possui apenas o eixo X(horizontal) e o eixo Y(vertical).
No comando dentro da void FixedUpdate, você está passando para o eixo X do seu rigidbody2D o Input Horizontal, e para o eixo Y, você está passando o Input vertical.
O problema ocorre por que você não está multiplicando estes Inputs pela velocidade (variável "maxSpeed").
Input Vertical e Horizontal são variáveis que vão apenas de 0 a 1, (0 quando não pressiona e 1 quando pressiona). Então, para aumentar esta velocidade, você tem que multiplicar este input por algo, que seria aquela variável "maxSpeed"
No fim das contas, fica +/- assim:
- Código:
using UnityEngine;
using System.Collections;
public class NavinhaBehaviour : MonoBehaviour{
public float velocidade = 10;
private Rigidbody2D rb;
void Start(){
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate(){
rb.velocity = new Vector2(Input.GetAxis("Horizontal")*velocidade, Input.GetAxis("Vertical")*velocidade);
}
}
kalel013- Avançado
- PONTOS : 3098
REPUTAÇÃO : 30
Idade : 24
Áreas de atuação : Artista 3d (blender), iniciante em programação (python e PHP), iniciante em arte 2d (InkScape)
Respeito as regras :
Re: [DÚVIDA] Dúvida sobre script e rigidbody
Hmm, até poderia. Vou anotar aqui, por que tem bastante gente com dúvidas sobre fazer a movimentação básica :D
Tópicos semelhantes
» [Duvida] Script de mover objeto usando o RigidBody
» Duvida sobre script
» Duvida sobre um script de contagem 1, 2, 3, GO!.
» Dúvida sobre o script de Mover Objetos
» [DUVIDA] Rigidbody KINEMACT
» Duvida sobre script
» Duvida sobre um script de contagem 1, 2, 3, GO!.
» Dúvida sobre o script de Mover Objetos
» [DUVIDA] Rigidbody KINEMACT
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos