Script de movimentação
+6
Phph09
Thiagoteles
BenK
MarcosSchultz
GustavoMaster
bartyz
10 participantes
Página 1 de 1
Script de movimentação
então estou com um problema aqui no script pois eu quero que meu personagem quando eu segurar shit+w ele execute uma animação
e quando apertar só "w" ele execute outra
meu script esta assim porfavor me ajudem
if(Input.GetKey("w"))
{
transform.Translate(0,0,correr);
GetComponent.<Animation>().Play("Correr");
}
if(Input.GetKey("w"))
if(Input.GetKey(KeyCode.LeftShift)
{
transform.Translate(0,0,andar);
GetComponent.<Animation>().Play("Andar");
}
}
e quando apertar só "w" ele execute outra
meu script esta assim porfavor me ajudem
if(Input.GetKey("w"))
{
transform.Translate(0,0,correr);
GetComponent.<Animation>().Play("Correr");
}
if(Input.GetKey("w"))
if(Input.GetKey(KeyCode.LeftShift)
{
transform.Translate(0,0,andar);
GetComponent.<Animation>().Play("Andar");
}
}
bartyz- Membro
- PONTOS : 3461
REPUTAÇÃO : 0
Respeito as regras :
Re: Script de movimentação
mano ta fazendo errado !!! tira esse comando do W daí e deixa só o do shift vai em um jogo e aperta só shift provavelmente ele vai correr, ou fazer outra coisa !
if(Input.GetKey("w"))
{
transform.Translate(0,0,correr);
GetComponent.().Play("Correr");
}
if(Input.GetKey(KeyCode.LeftShift)
{
transform.Translate(0,0,andar);
GetComponent.().Play("Andar");
}
}
isso provavelmente vai funcionar boa sorte
if(Input.GetKey("w"))
{
transform.Translate(0,0,correr);
GetComponent.().Play("Correr");
}
if(Input.GetKey(KeyCode.LeftShift)
{
transform.Translate(0,0,andar);
GetComponent.().Play("Andar");
}
}
isso provavelmente vai funcionar boa sorte
GustavoMaster- Avançado
- PONTOS : 3772
REPUTAÇÃO : 14
Idade : 21
Respeito as regras :
Re: Script de movimentação
Cara, dê uma olhada nesta base que eu fiz para você ver algumas coisas em que você está errando...
Primeiramente, troquei o metodo... Fiz uma variavel para controlar a velocidade conforme eu aperto shift ou deixo de aperta-lo...
outra coisa que eu fiz, foi multiplicar o Translate por *Time.deltaTime para normalizar a velocidade independente do computador que estiver rodando o jogo ( isto é necessário )
e a terceira e mais importante, eu setei o componente Animator, como pode ver na linha abaixo:
A questão é, qual componente você está usando? animator ou animation?
- Código:
using UnityEngine;
using System.Collections;
public class Comandos : MonoBehaviour {
public float correr = 2, andar = 1;
private int velocidade;
void Start (){
velocidade = 1;
}
void Update () {
if(Input.GetKey("w")){
if(velocidade == 1){
transform.Translate(0,0,andar*velocidade*Time.deltaTime);
GetComponent<Animation>().Play("Andar");
}else if(velocidade == 2){
transform.Translate(0,0,correr*velocidade*Time.deltaTime);
GetComponent<Animation>().Play("Correr");
}
}
if (Input.GetKey (KeyCode.LeftShift)) {
velocidade = 2;
} else {
velocidade = 1;
}
}
}
Primeiramente, troquei o metodo... Fiz uma variavel para controlar a velocidade conforme eu aperto shift ou deixo de aperta-lo...
outra coisa que eu fiz, foi multiplicar o Translate por *Time.deltaTime para normalizar a velocidade independente do computador que estiver rodando o jogo ( isto é necessário )
e a terceira e mais importante, eu setei o componente Animator, como pode ver na linha abaixo:
- Código:
GetComponent<Animation>().Play("Correr");
A questão é, qual componente você está usando? animator ou animation?
Re: Script de movimentação
animation tipo o jogo que estou trabalhando e estilo pokemon generations mais gostaria de usar duas key tipo aperta "Shift+W" para ele executar outra animação mais ja me decide que vou deixar apenas a animação de correr
bartyz- Membro
- PONTOS : 3461
REPUTAÇÃO : 0
Respeito as regras :
Re: Script de movimentação
galera to tentando fazer o carinha correr só quando o botão shift esquerdo ta precionado, mas a velociade dele não se altera, tem algum script pronto pra fazer essa movimentação?
BenK- Iniciante
- PONTOS : 2699
REPUTAÇÃO : 0
Respeito as regras :
Re: Script de movimentação
peque o clip do componente animação e sete a 'speed' como 2 quando você está correndo. e como 1 quando está normal.
Re: Script de movimentação
Vlw me ajudou muito Marcos
Thiagoteles- Iniciante
- PONTOS : 2478
REPUTAÇÃO : 0
Respeito as regras :
Re: Script de movimentação
Cara, translate não é nem um pouco recomendado em movimentação;bartyz escreveu:então estou com um problema aqui no script pois eu quero que meu personagem quando eu segurar shit+w ele execute uma animação
e quando apertar só "w" ele execute outra
meu script esta assim porfavor me ajudem
if(Input.GetKey("w"))
{
transform.Translate(0,0,correr);
GetComponent.<Animation>().Play("Correr");
}
if(Input.GetKey("w"))
if(Input.GetKey(KeyCode.LeftShift)
{
transform.Translate(0,0,andar);
GetComponent.<Animation>().Play("Andar");
}
}
Recomendo que use o Rigidbody.velocity:
https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Script de movimentação
Estou fazendo om codigo para movimentacao de um personagem e fiz 3 animacoes pra camera pra quando ele andar ela tremer, e quando ele correr ela tremer mais ainda e se ele estiver parado ela nao tremer porem eu nao consigo fazer uma condicao que diga pro codigo q ele esta parado
esse foi a primeira vez
e esse foi tentando arrumar
esse foi a primeira vez
- Código:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
public class Player: MonoBehaviour
{
public CharacterController controller;
public Slider vidaPlayer, estamina;
public float Crono, gvdd = -9.81f, speed, jmp = 5f, CronoEstamina, dtdc = 0.4f;
public Transform Gc;
public LayerMask Gm;
Vector3 gvddSpeed;
bool ingd, agaix, run, walk, jump;
void Start()
{
speed = 1;
}
void Update()
{
Crono += Time.deltaTime;
CronoEstamina += Time.deltaTime;
if (vidaPlayer.value == 100)
{
Crono = 0f;
}
if (Crono >= 10f & vidaPlayer.value <= 99)
{
vidaPlayer.value++;
}
if (vidaPlayer.value <= 0)
{
//colocar para ir para tela de game over
}
if (CronoEstamina == 5)
{
CronoEstamina = 5;
}
if (CronoEstamina > 5 & estamina.value <= 149)
{
estamina.value++;
}
ingd = Physics.CheckSphere(Gc.position, dtdc, Gm);
if(ingd && gvddSpeed.y < 0)
{
gvddSpeed.y = -2f;
}
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
if (Input.GetKeyDown(KeyCode.Space) && ingd)
{
jump = true;
gvddSpeed.y = Mathf.Sqrt(jmp * -2f * gvdd);
}
if (Input.GetKeyDown(KeyCode.LeftShift) & estamina.value >= 1 & agaix == false)
{
run = true;
walk = false;
speed = 27;
}
if (Input.GetKeyUp(KeyCode.LeftShift))
{
controller.height = 2;
}
if (speed == 27)
{
agaix = false;
run = true;
estamina.value--;
CronoEstamina = 0f;
}
if(estamina.value <= 0 & agaix == false)
{
walk = true;
}
if (estamina.value >= 150)
{
CronoEstamina = 0f;
}
if (Input.GetKeyDown(KeyCode.LeftControl))
{
walk = false;
run = false;
agaix = true;
controller.height = 0.5f;
}
if (Input.GetKeyUp(KeyCode.LeftControl))
{
walk = true;
controller.height = 2;
speed = 15;
}
if(agaix == true & jump == true)
{
agaix = false;
controller.height = 0.5f;
}
if(run == true)
{
MouseMoviment.instace.Run();
speed = 27;
CronoEstamina = 0f;
}
if(walk == true)
{
agaix = false;
run = false;
speed = 17;
}
if(jump == true)
{
agaix = false;
speed = 17;
}
if(jump == true & run == true)
{
speed = 27;
}
gvddSpeed.y += gvdd * Time.deltaTime;
controller.Move(gvddSpeed * Time.deltaTime);
}
void OnTriggerStay(Collider other)
{
if (other.tag == "Inimigos")
{
vidaPlayer.value--;
Crono = 0f;
}
}
}
e esse foi tentando arrumar
- Código:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
public class Player: MonoBehaviour
{
public CharacterController controller;
public Slider vidaPlayer, estamina;
public float Crono, gvdd = -9.81f, jmp = 5f, CronoEstamina, dtdc = 0.4f;
public Transform Gc;
public LayerMask Gm;
Vector3 gvddSpeed;
bool ingd, agaix, run, walk, jump;
void Start()
{
}
void Update()
{
Crono += Time.deltaTime;
CronoEstamina += Time.deltaTime;
if (vidaPlayer.value == 100)
{
Crono = 0f;
}
if (Crono >= 10f & vidaPlayer.value <= 99)
{
vidaPlayer.value++;
}
if (vidaPlayer.value <= 0)
{
//colocar para ir para tela de game over
}
if (CronoEstamina == 5)
{
CronoEstamina = 5;
}
if (CronoEstamina > 5 & estamina.value <= 149)
{
estamina.value++;
}
ingd = Physics.CheckSphere(Gc.position, dtdc, Gm);
if(ingd && gvddSpeed.y < 0)
{
gvddSpeed.y = -2f;
}
if (Input.GetKeyDown(KeyCode.Space) && ingd)
{
jump = true;
gvddSpeed.y = Mathf.Sqrt(jmp * -2f * gvdd);
}
if (estamina.value >= 150)
{
CronoEstamina = 0f;
}
if (Input.GetKeyDown(KeyCode.LeftControl))
{
walk = false;
run = false;
agaix = true;
controller.height = 0.5f;
}
if (Input.GetKeyUp(KeyCode.LeftControl))
{
walk = true;
controller.height = 2;
}
gvddSpeed.y += gvdd * Time.deltaTime;
controller.Move(gvddSpeed * Time.deltaTime);
}
void OnTriggerStay(Collider other)
{
if (other.tag == "Inimigos")
{
vidaPlayer.value--;
Crono = 0f;
}
}
}
GabiruDDDD- Iniciante
- PONTOS : 1611
REPUTAÇÃO : 0
Respeito as regras :
Re: Script de movimentação
Tenta usar
- Código:
if(CharacterController.velocity == Vector3.zero)
LúcioHenrique098- Avançado
- PONTOS : 2194
REPUTAÇÃO : 31
Idade : 20
Áreas de atuação : Intermediário em Programação, Iniciante em Modelagem
Respeito as regras :
Re: Script de movimentação
Essa funcionalidade do characterController é util para saber se o objeto está em repouso.
LúcioHenrique098- Avançado
- PONTOS : 2194
REPUTAÇÃO : 31
Idade : 20
Áreas de atuação : Intermediário em Programação, Iniciante em Modelagem
Respeito as regras :
Pastel089- Iniciante
- PONTOS : 1563
REPUTAÇÃO : 1
Respeito as regras :
Re: Script de movimentação
Pastel089 escreveu:Mano não acho script de andar alguém me ajuda pfv
oi vou te mandar a forma mais simples de se fazer um script de movimento, é tão simples q tu nem vai acredita, no unity existem uns inputs que retornam um valor positivo +1 ou negativo -1 ou nulo, e isso acontece com os eixos horizontal e vertical das teclas e já vem setado para WASD então é muito fácil fazer uma movimentação básica.
- Código:
if (podeSeMover)
{
//movimentacao basica
NavMesh.transform.Translate(new Vector3
(Input.GetAxis("Horizontal") * speed * Time.fixedDeltaTime, 0,
Input.GetAxis("Vertical") * speed * Time.fixedDeltaTime));
}
agora esse aqui é parte de um script meu, nao posto ele todo senão vai é bugar sua cabeça...
ai eu to usando o navMesh pra usar o translate, caso nao saiba ou nao use o NavMesh no seu projeto, tu pode usar o transform.Translate, passando os mesmos parametros ou o RigidBody.transform.translate que vai funfar da mesma forma
e tu vai ter que criar uma var float speed global e uma boolean podeSeMover, ou pode simplesmente tirar de dentro do if.
e isso que mandei vai dentro do metodo Update.
Tópicos semelhantes
» Script de movimentação
» Script de movimentação
» Alguém tem script de movimentação 3D?
» Ajuda Script Movimentação
» Script de Movimentação não funciona
» Script de movimentação
» Alguém tem script de movimentação 3D?
» Ajuda Script Movimentação
» Script de Movimentação não funciona
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos