Olá Usuário! para uma melhor experiência em nosso fórum, recomendamos que você instale o Google Chrome.
Olá Membro! Nosso fórum está passando por uma atualização e pode contém bugs/falhas, caso encontre algum, avise a nossa equipe.

Tópicos recentes

» tem como mudar o material, ou Shader padrão do Terrein ?
Hoje à(s) 8:34 pm por MiguelLuiz

» Duvidas com Raycast
Hoje à(s) 8:09 pm por afonsoeu

» [Apresentado] Olá, pessoal
Hoje à(s) 7:11 pm por M4theuz

» [TUTORIAL] MOVIMENTO NA ARMA PARA FICAR MAIS REAL!
Hoje à(s) 7:06 pm por richardfalcos

» [Administração] Novo tema - Opinião
Hoje à(s) 6:59 pm por otavio00augusto

» Tecla para encaixar objetos
Hoje à(s) 6:51 pm por NKKF

» SpringJoint
Hoje à(s) 6:50 pm por Lteo

» [____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Hoje à(s) 6:43 pm por M4theuz

» Servidores sem limite por usuário.
Hoje à(s) 6:16 pm por artplayer

» [Apresentado] Primeira apresentação da subdivisão "Apresente-se"
Hoje à(s) 5:52 pm por PauloFR

» [RESOLVIDO] Como uso esse script
Hoje à(s) 5:41 pm por PauloFR

» [RESOLVIDO] Erro -> Android SDK is missing required API level 23
Hoje à(s) 5:41 pm por PauloFR

» [RESOLVIDO] Menu Pause Dúvida
Hoje à(s) 5:40 pm por PauloFR

» [RESOLVIDO] Duvida com GameManager
Hoje à(s) 5:40 pm por PauloFR

» [RESOLVIDO] Alguém me explica isso? (Animator script)
Hoje à(s) 5:39 pm por PauloFR

» [RESOLVIDO] Projeteis Online
Hoje à(s) 5:39 pm por PauloFR

» [RESOLVIDO] Problemas com API
Hoje à(s) 5:39 pm por PauloFR

» [RESOLVIDO] Sons na Unity 2017
Hoje à(s) 5:38 pm por PauloFR

» [RESOLVIDO] Tocar som em script que exibe uma mensagem
Hoje à(s) 5:38 pm por PauloFR

» É possível usar protocolos TCP para conexão na Unity?
Hoje à(s) 5:37 pm por NKKF

» [Abandonado] Unity - executável não roda banco de dados
Hoje à(s) 5:36 pm por PauloFR

» [Abandonado] Stay in The Light (formação de equipe)
Hoje à(s) 5:34 pm por PauloFR

» [Abandonado] Programador Rodando o Sul
Hoje à(s) 5:31 pm por PauloFR

» [Abandonado] Quero fazer um jogo de terror estilo slender multiplayer
Hoje à(s) 5:30 pm por PauloFR

» [Resolvido]Banco de Dados
Hoje à(s) 5:29 pm por PauloFR

» [Abandonado] Jogo em pixel art utilizando Tilemap.
Hoje à(s) 5:28 pm por PauloFR

» [Abandonado] Equipe de desenvolvimento
Hoje à(s) 5:26 pm por PauloFR

» [Abandonado] Procuro Equipe Para Criação de Um Jogo
Hoje à(s) 5:26 pm por PauloFR

» [Abandonado] PROCURA-SE PROGRAMADORES PARA INICIAR UM NOVO PROJETO!
Hoje à(s) 5:24 pm por PauloFR

» [Resolvido] ZUMBI FUNCIONAL no UNITY
Hoje à(s) 5:23 pm por PauloFR

avatar
Administrador
Posts :
5834

Pontos :
11959

Reputação :
1906

Registro :
19/09/2014

Sexo :
Masculino

Idade :
21

Staff

Postado em 20/9/2014, 1:27 am
Crie um script em C# chamado "Run" e adicione este codigo a ele... após, coloque o script no seu player... este script fará com que ele se agache apertando a tecla "ctrl" e corra de maneira que fique cansado...


OBS: para o script funcionar corretamente, você deve converter os seus scripts de Mouselook, characterMotor, etc para C#


Código:

using UnityEngine;
using System.Collections;
public class Run : MonoBehaviour {
public float walkSpeed = 7;
public float crchSpeed = 3;
public float runSpeed = 20;
private CharacterMotor chMotor;
private Transform tr;
private float dist;
public float curStam = 100.0f;
public float maxStam = 100.0f;
public bool isSprinting = false;
public float percentOfStamina;
public bool stamCooldown = false;
void Start () {
chMotor =  GetComponent<CharacterMotor>();
tr = transform;
CharacterController ch = GetComponent<CharacterController>();
dist = ch.height/2;  
}
void FixedUpdate (){
float vScale = 1.0f;
float speed = walkSpeed;
if ((Input.GetKey("left shift") && chMotor.grounded && curStam > 0 && stamCooldown == false)){
speed = runSpeed;  
walkSpeed = 12;
isSprinting = true;
}
else{
walkSpeed = 6;
isSprinting = false;
}
if (Input.GetKey(KeyCode.LeftControl)){
vScale = 0.5f;
speed = crchSpeed; // slow down when crouching
}
chMotor.movement.maxForwardSpeed = speed; // set max speed
float ultScale = tr.localScale.y; // crouch/stand up smoothly
Vector3 tmpScale = tr.localScale;
Vector3 tmpPosition = tr.position;
tmpScale.y = Mathf.Lerp(tr.localScale.y, vScale, 5 * Time.deltaTime);
tr.localScale = tmpScale;
tmpPosition.y += dist * (tr.localScale.y - ultScale); // fix vertical position      
tr.position = tmpPosition;
percentOfStamina = curStam/maxStam;
if(isSprinting == true && curStam >= 0) {
curStam--;
}
if(isSprinting == false && curStam < 100.0) {
curStam++;
}
if(curStam == 0) {
stamCooldown = true;
}
if(curStam == 100.0) {
stamCooldown = false;
}
}
}


Última edição por MarcosSchultz em 7/6/2016, 9:17 pm, editado 1 vez(es)

Posts :
1

Pontos :
2182

Reputação :
0

Registro :
01/07/2015

0/10 Avisos

Postado em 2/7/2015, 4:21 pm
pega no unity 5?
Membro Avançado
Posts :
99

Pontos :
2637

Reputação :
15

Registro :
31/01/2015

Sexo :
Masculino

Idade :
16

0/10 Avisos

Postado em 2/7/2015, 8:59 pm
fafato1 eu testei e nao funfou
avatar
Administrador
Posts :
5834

Pontos :
11959

Reputação :
1906

Registro :
19/09/2014

Sexo :
Masculino

Idade :
21

Staff

Postado em 5/7/2015, 1:13 pm
Na unity 5 é um pouco complicado pois o Character controller já vem com alguns sistemas destes imbutidos como correr, som dos passos, etc, etc... naturalmente os scripts são diferentes da versão anterior.

aqui tem um tutorial onde eu explico como usar o novo FPS controller:



más quanto ao script, só funcionará na Unity 4 ou inferior...

Posts :
36

Pontos :
2085

Reputação :
9

Registro :
19/09/2015

0/10 Avisos

Postado em 26/9/2015, 5:45 pm
Tentei adaptar a stamina em cima do script de correrAgachar, mas por algum motivo apesar de estar aparentemente certo o código, a velocidade parece que não está ficando como caminhando, me parece que continua correndo. E estou tentando pensar num método de recuperar a stamina após 10 segundos descansando (pode andar ou ficar agachado, mas não pode correr), mas nada faz efeito. O que tem de errado com esse código? Estou usando Unity 5.1.2:

Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;

public class CorrerAgachar : MonoBehaviour {
   public float velocidadeCaminhando = 2, velocidadeAgachado = 0.5f, velocidadeCorrendo = 4;
   private CharacterController characterController;
   private float escalaDoObjeto, velocidadeAtual;
   private static float staminaAtual;
   private int stamina = 7;
   private FirstPersonController controlador;
   public bool podeCorrer;

   void Start () {
      characterController = GetComponent<CharacterController> ();
      escalaDoObjeto = characterController.height;
      controlador = GetComponent<FirstPersonController> ();
      staminaAtual = stamina;
   }
   
   void FixedUpdate () {
      if (Input.GetKey (KeyCode.LeftShift) && characterController.isGrounded && !Input.GetKey(KeyCode.LeftControl) && podeCorrer == true) {
         velocidadeAtual = velocidadeCorrendo;  //Esta Correndo;
         escalaDoObjeto = 1.7f;
         controlador.m_UseFovKick = true;
         controlador.m_FovKick.FOVIncrease = 10;
         staminaAtual -= Time.deltaTime;
      } else if (!Input.GetKey(KeyCode.LeftControl) && characterController.isGrounded){
         velocidadeAtual = velocidadeCaminhando;  //Esta Caminhando;
         staminaAtual += Time.deltaTime;
      } if (Input.GetKey (KeyCode.LeftControl)) {
         escalaDoObjeto = 0.5f;
         velocidadeAtual = velocidadeAgachado;  //Esta Agachado;
         controlador.m_UseFovKick = false;
         staminaAtual += Time.deltaTime;
      } else if (!Input.GetKey (KeyCode.LeftShift)){
         escalaDoObjeto = 1.7f;
         velocidadeAtual = velocidadeCaminhando;
         staminaAtual += Time.deltaTime;
      }
      if (staminaAtual <= 0) {
         podeCorrer =  false;
      }else if(staminaAtual > 0){
         podeCorrer = true;
      }
      if (staminaAtual >= stamina) {
         staminaAtual = stamina;
      }
      controlador.m_RunSpeed = velocidadeAtual;
      controlador.m_WalkSpeed = velocidadeAtual;
      characterController.height = Mathf.Lerp (characterController.height, escalaDoObjeto, 3 * Time.deltaTime);

   }
}
avatar
Administrador
Posts :
5834

Pontos :
11959

Reputação :
1906

Registro :
19/09/2014

Sexo :
Masculino

Idade :
21

Staff

Postado em 26/9/2015, 6:31 pm
seria interessante você criar um tópico especifico para esta dúvida perinaldoc

Especifique versão da engine e tdo mais... Pode estar havendo incompadibilidade com os scripts do Controller da unity 4 com os da unity 5

Posts :
36

Pontos :
2085

Reputação :
9

Registro :
19/09/2015

0/10 Avisos

Postado em 26/9/2015, 10:47 pm
Mas eu não estou usando nada da Unity 4. Eu já comecei a desenvolver meu jogo na Unity 5.1.2 mesmo. Eu assisti seu vídeo explicando o script de agacharCorrer, vi que ele era feito na Unity antiga e eu mesmo fui adaptando para a nova. Por exemplo, no seu código vc usa CharacterMotor que na Unity 5 não existe e faz parte do FPSController. Então fui adaptando e tudo está funcionando perfeitamente. Acontece que depois eu quis inserir nesse mesmo script a stamina. Não peguei a lógica do seu script de stamina, usei a mesma lógica de decrementar a stamina a cada 1 segundo como vc fez na carga da lanterna. Isso até funciona, mas não sei como fazer voltar a stamina. Não quero que ela volte de vez. Quero que ao deixar de correr, cerca de 10 segundos depois a stamina comece a retornar 1 unidade por segundo, entendeu?

Posts :
12

Pontos :
2284

Reputação :
0

Registro :
16/05/2015

0/10 Avisos

Postado em 6/12/2015, 11:26 am
A arma encolhe nesse script :/ como poderia concertar isso
avatar
Administrador
Posts :
5834

Pontos :
11959

Reputação :
1906

Registro :
19/09/2014

Sexo :
Masculino

Idade :
21

Staff

Postado em 7/12/2015, 12:57 am
Este script ai está um poco obsoleto... Ali o tamanho do player todo é alterado, consequentemente o que é filho do player encolhe também...

Daria para tentar alguma solução deste tipo:

Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class Run : MonoBehaviour {
   private CharacterController controlador;
   private FirstPersonController ScriptFPSController;
   [Range(1,10)]
   public float velCaminhando = 5,velCorrendo = 10,velAbaixado = 2;
   private float tamanhoInicialPlayer;
   void Start () {
      controlador = GetComponent<CharacterController> ();
      ScriptFPSController = GetComponent<FirstPersonController> ();
      SetarVelocidades (velCaminhando, velCorrendo);
      tamanhoInicialPlayer = controlador.height;
   }
   void FixedUpdate (){
      if (Input.GetKey (KeyCode.LeftControl)) {
         SetarVelocidades (2, 2);
         controlador.height = Mathf.Lerp (controlador.height, 1, 5 * Time.deltaTime);
      } else {
         SetarVelocidades (velCaminhando, velCorrendo);
         controlador.height = Mathf.Lerp (controlador.height, tamanhoInicialPlayer, 5*Time.deltaTime);
      }
   }
   void SetarVelocidades(float velocidadeCaminhando, float velocidadeCorrendo){
      ScriptFPSController.m_WalkSpeed = velocidadeCaminhando;
      ScriptFPSController.m_RunSpeed = velocidadeCorrendo;
   }
}

Neste script eu altero o tamanho do colisor somente e não do player; Más este script de abaixar só vai funcionar na Unity 5, e não é lá o ideal a se fazer