fazer com que o personagem não pule infinitamente
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
fazer com que o personagem não pule infinitamente
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controles : MonoBehaviour {
//public GameObject Player;
public KeyCode Frente;
public KeyCode Tras;
public KeyCode Direita;
public KeyCode esquerda;
public KeyCode pular;
public Rigidbody rb;
public float turnSpeed = 50f;
public float moveSpeed = 10f;
public float jumpSpeed = 50f;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody> ();
}
// Update is called once per frame
void FixedUpdate () {
if (Input.GetKey(Frente)) {
transform.Translate(Vector3.forward* moveSpeed * Time.deltaTime);
}
if (Input.GetKey(Tras)) {
transform.Translate(-Vector3.forward* moveSpeed * Time.deltaTime);
}
if (Input.GetKey(Direita)) {
transform.Rotate (Vector3.up, turnSpeed * Time.deltaTime);
}
if (Input.GetKey(esquerda)) {
transform.Rotate (Vector3.up, -turnSpeed * Time.deltaTime);
}
if (Input.GetKey(pular)) {
rb.AddForce(0,jumpSpeed,0);
}
}
}
Última edição por thiagograssi em Dom Jan 07, 2018 2:54 pm, editado 1 vez(es)
thiagograssi- MembroAvançado
- PONTOS : 3373
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Re: fazer com que o personagem não pule infinitamente
Você tem que fazer algum sistema para checar quando o personagem entrou em contato com o chão ou algo que reinicie o pulo dele.
Você pode usar um detector de colisão, que ao tocar no chão ele mude uma variavel (inJump), para false, assim podendo pular novamente.
Ou pode fazer usando sistema de tempo, tipo apos 2 segundos ele muda a varivel para false permitindo pular novamente.
Você pode usar um detector de colisão, que ao tocar no chão ele mude uma variavel (inJump), para false, assim podendo pular novamente.
Ou pode fazer usando sistema de tempo, tipo apos 2 segundos ele muda a varivel para false permitindo pular novamente.
- Código:
private bool inJump = false;
if (Input.GetKey(pular) && !inJump) {
rb.AddForce(0,jumpSpeed,0);
inJump = true;
}
Goustkor- Avançado
- PONTOS : 3073
REPUTAÇÃO : 18
Respeito as regras :
Re: fazer com que o personagem não pule infinitamente
geralmente um dos sistemas q uso q da super certo e isso :com rigidbody checando se ele esta no chao tambem,
bom dia!
- Código:
if (Input.GetKeyDown(KeyCode.Space))
{
if (IsChao)
rb.AddForce(Vector3.up*JumpSpeed-rb.Velocity,ForceMode.Impulse);
bom dia!
Re: fazer com que o personagem não pule infinitamente
obrigado a todos, consegui oque eu queria e o script ficou assim
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controles : MonoBehaviour {
public KeyCode Frente;
public KeyCode Tras;
public KeyCode Direita;
public KeyCode esquerda;
public KeyCode pular;
public Rigidbody rb;
public float turnSpeed = 50f;
public float moveSpeed = 10f;
public float jumpSpeed = 50f;
public bool injump = false;
public bool inchao = true;
public float tempo;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody> ();
}
// Update is called once per frame
void FixedUpdate () {
if (Input.GetKey(Frente)) {
transform.Translate(Vector3.forward* moveSpeed * Time.deltaTime);
}
if (Input.GetKey(Tras)) {
transform.Translate(-Vector3.forward* moveSpeed * Time.deltaTime);
}
if (Input.GetKey(Direita)) {
transform.Rotate (Vector3.up, turnSpeed * Time.deltaTime);
}
if (Input.GetKey(esquerda)) {
transform.Rotate (Vector3.up, -turnSpeed * Time.deltaTime);
}
if (Input.GetKeyDown(pular)&& !injump) {
StartCoroutine ("CronometroPular");
rb.AddForce(0,jumpSpeed,0);
inchao = false;
injump = true;
if (inchao = false);
rb.AddForce(Vector3.up*jumpSpeed-rb.velocity,ForceMode.Impulse);
}
}
IEnumerator CronometroPular () {
yield return new WaitForSeconds (tempo);
inchao = true;
injump = false;
}
}
Última edição por thiagograssi em Dom Jan 07, 2018 3:57 pm, editado 1 vez(es) (Motivo da edição : informação errada)
thiagograssi- MembroAvançado
- PONTOS : 3373
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Re: fazer com que o personagem não pule infinitamente
thiagograssi escreveu:obrigado a todos, consegui oque eu queria e o script ficou assim
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controles : MonoBehaviour {
public KeyCode Frente;
public KeyCode Tras;
public KeyCode Direita;
public KeyCode esquerda;
public KeyCode pular;
public Rigidbody rb;
public float turnSpeed = 50f;
public float moveSpeed = 10f;
public float jumpSpeed = 50f;
public bool injump = false;
public bool inchao = true;
public float tempo;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody> ();
}
// Update is called once per frame
void FixedUpdate () {
if (Input.GetKey(Frente)) {
transform.Translate(Vector3.forward* moveSpeed * Time.deltaTime);
}
if (Input.GetKey(Tras)) {
transform.Translate(-Vector3.forward* moveSpeed * Time.deltaTime);
}
if (Input.GetKey(Direita)) {
transform.Rotate (Vector3.up, turnSpeed * Time.deltaTime);
}
if (Input.GetKey(esquerda)) {
transform.Rotate (Vector3.up, -turnSpeed * Time.deltaTime);
}
if (Input.GetKeyDown(pular)&& !injump) {
StartCoroutine ("CronometroPular");
rb.AddForce(0,jumpSpeed,0);
inchao = false;
injump = true;
if (inchao = false);
rb.AddForce(Vector3.up*jumpSpeed-rb.velocity,ForceMode.Impulse);
}
}
IEnumerator CronometroPular () {
yield return new WaitForSeconds (tempo);
inchao = true;
injump = false;
}
}
Acho que seria melhor usar um cronometro usando o Time.deltaTime
- Código:
private float cronometro = false;
public float tempo = 4f;
void Update(){
cronometro += Time.deltaTime;
if(cronometro >= tempo){
cronometro = 0f;
//Código
}
}
Goustkor- Avançado
- PONTOS : 3073
REPUTAÇÃO : 18
Respeito as regras :
Re: fazer com que o personagem não pule infinitamente
kara esse teu script funcionou mesmo ?? só uma duvida,
Re: fazer com que o personagem não pule infinitamente
funcionou, pode testar ai, e o tempo ideal de cada pulo é 2 segundosfelipehobs1 escreveu:kara esse teu script funcionou mesmo ?? só uma duvida,
thiagograssi- MembroAvançado
- PONTOS : 3373
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Re: fazer com que o personagem não pule infinitamente
perguntei por causa da linha 53:
mas se funcionou,ta blz, boa sorte com seu jogo/app
- Código:
if (inchao = false);
mas se funcionou,ta blz, boa sorte com seu jogo/app
Tópicos semelhantes
» Meu personagem consegue pular infinitamente
» Personagem voando infinitamente no Unity 2D
» Como fazer o personagem me atacar e fazer o personagem morrer??
» Alguém poderia fazer uma aula de como criar um sistema de fazer o personagem trocar de equipamento?
» Fazer o personagem atirar
» Personagem voando infinitamente no Unity 2D
» Como fazer o personagem me atacar e fazer o personagem morrer??
» Alguém poderia fazer uma aula de como criar um sistema de fazer o personagem trocar de equipamento?
» Fazer o personagem atirar
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos