SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Ajuda Jogo de Luta 2D precisando de AI CPU inteligente
TEM COMO COLOCAR UM VIDEO NO CANVAS?
Como rodar uma animação feita em shape keys do blender na unity?
Erro no Script
Tela (Screen) Android e Joystick adaptável à tela !
COMO EXPORTAR MEU PROJETO E DAR CONTINUAÇÃO POR OUTRO COMPUTADOR ?
MEU JOGO ANDROID
Asset Sistema de rajada
Parentear Objetos por script C#
Preciso de Programador e Modelador para jogo de tiro futurista
BAIXE GRÁTIS MODELOS 3D (FUZIL FOTO REALÍSTICO - 22-06-2017)
(AVALIEM) Sistema de IA para pedestre e trafego e ROTAS COM RAIN
[Unity] - Criar botão em C#
[AVALIAÇÃO] AVALIEM MEU JOGO MOBILE
PHP e MYSQLI
Bugs da Unity
Meu Canva nao para de tremer o que fazer?
Duvidas multiplayer online em terceira pessoa
Defeito com colisao
Script de Mover - Estilo Subway Surfs
Sistema de Nevoa
Erro estranho Invalid AABB a
não esta salvando o score
Ajuda com scripts de inimigo e player'' interação de zumbi e player''
Mudar Gráfico
[TUTORIAL] Mover, Girar e lançar objetos com o mouse ( estilo Amnesia )
[TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera
ALGUEM SABE COMO POSSO DESATIVAR O LOOP DA ANIMAÇAO
[Resolvido] Relacionada a Objetos em Arrays.
Modelagem de personagens
Como sair desse loop?
Como instanciar muitos objetos?
[TUTORIAL] 43 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
[Game] World Adventure (Nova Beta)
[_____CRONOGRAMA DO CANAL_____]
[UPDATE DO MEU PROJETO] - Veja e avalie o sistema de combate do meu jogo!
Problema com Sprite
Sistema de Susto Cronometrado
[TUTORIAL] Camera de visão noturna (Night vision) na Unity 5
Script de Mover
[Duvida] ScrollBar
- -[ASSETS PARA GAMES]- -
[Votação] História futurista ou mais antiga ._.
[TUTORIAL] AI Enemy ( Jogos de terror )
-[ASSETS PARA GAMES/ALGUNS]-
esse e o meu jogo "a floresta" que estou fazendo VEJAM O VIDEO
Problema esquisito com botoes depois de fazer a build
[Duvida] Decrescer uma Array.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Como mudar o sprite?
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
Glitch visual
Probleminha em um script que fiz
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Escolha de Controle para Android
Como instanciar na posição desejada (Canvas)?
[TUTORIAL] UNITY 5 - Efeito submerso (underwater effect), distorção da água e gotas na tela
Sistema de Missao e Recompensa!
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[Duvida] Como Deixar O Texto Mais Bonito.
Animação de inimigo não funciona
[Dica] Como converter JAVA SCRIPT para C#
Projeto, Recrutamento! Jogo de terror 3D " Sem Medo"
[Desabilitar gravidade de um Character Controller]
Primeira GamePlay do meu jogo de fps multiplayer (em desenvolvimento)
Cenários Espaciais vs Escala
Jogo para Android para testar
Atualizado (The Pyramid 1.1.1)
Fighters for honor(Jogo da segunda guerra mundial)
Ajuda Erro ao compilar Android
Script não compila com monodevelop
Imagem personalizada no menu de configuração [PRINT]
Demo Terror
[RESOLVIDO] Problema depois de passar para nivel 3
efeitos sonoros
[Modelo 3D - Avaliação] Sniper M700 LowPoly
PHP numeros inteiro?
CONTRATANDO ANIMADOR
Asset para game de terror
[Modelo 3D] AK-47
[DEVLOG - 17-06-17] Projeto - Girl Blade
jogo quiz 2D unity 5...
Ajuda com Script
Duvida com o Pack UFPS
[PEDIDO] Gostaria que avaliaçe meu Cenario LOW POLY
(Resolvido)Monodevelop
Como se faz uma copia de uma cena?
[Equipe] Equipe para jogo tower defense low poly
Como faço um sistema de sanidade (estilo amnesia)
[Ajuda] Variavel não esta recebendo o valor do outro script
Material Editor
Como sera que fizeram o sistema de hackear do watch dogs?
Como desativa um script dentro de outro?
Mudar material via script
[Update do meu projeto] - Avalie o novo ícone do meu jogo!
-[COMO RESOLVO ESTE ERRO DO SCRIPT??]-
[OUTRO] Atualização do jogo New day on the zombies world 0.9.0
ATUALIZAÇÃO - Joguem meu jogo [Aircraft - Space Guardian] Please !!
Como posso fazer um IF do termino de uma animação?
Hoje à(s) 5:20 pm
Hoje à(s) 5:16 pm
Hoje à(s) 2:31 pm
Hoje à(s) 2:28 pm
Hoje à(s) 1:56 pm
Hoje à(s) 12:34 pm
Hoje à(s) 12:33 pm
Hoje à(s) 12:30 pm
Hoje à(s) 12:20 pm
Hoje à(s) 12:10 pm
Hoje à(s) 11:08 am
Hoje à(s) 11:06 am
Hoje à(s) 9:37 am
Hoje à(s) 8:01 am
Ontem à(s) 10:49 pm
Ontem à(s) 10:19 pm
Ontem à(s) 10:08 pm
Ontem à(s) 9:31 pm
Ontem à(s) 8:39 pm
Ontem à(s) 8:39 pm
Ontem à(s) 8:34 pm
Ontem à(s) 8:34 pm
Ontem à(s) 8:08 pm
Ontem à(s) 7:35 pm
Ontem à(s) 6:12 pm
Ontem à(s) 4:31 pm
Ontem à(s) 2:12 pm
Ontem à(s) 2:06 pm
Ontem à(s) 1:48 pm
Ontem à(s) 11:52 am
Ontem à(s) 12:25 am
Ter Jun 20, 2017 11:40 pm
Ter Jun 20, 2017 11:19 pm
Ter Jun 20, 2017 11:14 pm
Ter Jun 20, 2017 10:59 pm
Ter Jun 20, 2017 10:56 pm
Ter Jun 20, 2017 9:35 pm
Ter Jun 20, 2017 9:17 pm
Ter Jun 20, 2017 9:11 pm
Ter Jun 20, 2017 7:25 pm
Ter Jun 20, 2017 7:24 pm
Ter Jun 20, 2017 6:57 pm
Ter Jun 20, 2017 6:34 pm
Ter Jun 20, 2017 6:32 pm
Ter Jun 20, 2017 6:05 pm
Ter Jun 20, 2017 6:01 pm
Ter Jun 20, 2017 4:57 pm
Ter Jun 20, 2017 1:53 pm
Ter Jun 20, 2017 1:23 pm
Ter Jun 20, 2017 1:18 pm
Ter Jun 20, 2017 1:13 pm
Ter Jun 20, 2017 12:55 pm
Ter Jun 20, 2017 12:52 pm
Ter Jun 20, 2017 12:51 pm
Ter Jun 20, 2017 12:41 pm
Ter Jun 20, 2017 12:36 pm
Ter Jun 20, 2017 12:31 pm
Ter Jun 20, 2017 12:27 pm
Ter Jun 20, 2017 12:24 pm
Ter Jun 20, 2017 12:20 pm
Ter Jun 20, 2017 12:15 pm
Ter Jun 20, 2017 10:33 am
Ter Jun 20, 2017 1:11 am
Seg Jun 19, 2017 11:55 pm
Seg Jun 19, 2017 10:32 pm
Seg Jun 19, 2017 10:25 pm
Seg Jun 19, 2017 10:23 pm
Seg Jun 19, 2017 7:56 pm
Seg Jun 19, 2017 7:51 pm
Seg Jun 19, 2017 7:39 pm
Seg Jun 19, 2017 7:27 pm
Seg Jun 19, 2017 5:37 pm
Seg Jun 19, 2017 4:47 pm
Seg Jun 19, 2017 4:16 pm
Seg Jun 19, 2017 12:55 pm
Seg Jun 19, 2017 12:52 pm
Seg Jun 19, 2017 11:59 am
Seg Jun 19, 2017 11:35 am
Seg Jun 19, 2017 10:56 am
Seg Jun 19, 2017 9:00 am
Seg Jun 19, 2017 6:57 am
Dom Jun 18, 2017 9:29 pm
Dom Jun 18, 2017 6:54 pm
Dom Jun 18, 2017 6:38 pm
Dom Jun 18, 2017 6:08 pm
Dom Jun 18, 2017 6:06 pm
Dom Jun 18, 2017 4:06 pm
Dom Jun 18, 2017 2:49 pm
Dom Jun 18, 2017 1:09 pm
Dom Jun 18, 2017 1:10 am
Dom Jun 18, 2017 12:14 am
Sab Jun 17, 2017 11:45 pm
Sab Jun 17, 2017 10:32 pm
Sab Jun 17, 2017 8:01 pm
Sab Jun 17, 2017 7:23 pm
Sab Jun 17, 2017 6:57 pm
Sab Jun 17, 2017 4:42 pm
Sab Jun 17, 2017 4:26 pm
Sab Jun 17, 2017 4:22 pm
EPSD00M
glauco
Willian Wii
michelly
SmithSchuldiner
Callyde Jr
marcos4503
Dom3000
marcos4503
edu094
Zecandy
Zecandy
Gilliard
dstaroski
Callyde Jr
marcos4503
Dom3000
weslleyFx
Dom3000
Duarte
Callyde Jr
Dom3000
marcos4503
Robinsandi
RenanKrause
Phoenix Wright
marcos4503
ffabim
dstaroski
sabbath
JoelMJunior
JoelMJunior
thzin
Mateus2583
thzin
marcos4503
Blindado
PauloFR
tom ramber
bruxamissi
ffabim
PauloFR
PauloFR
Joaopm1
Chilinger
Chilinger
DUT
rafaelllsd
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
dstaroski
MateusWTP
Bruno11playerG
NyanHeavyBR
NyanHeavyBR
marcos4503
Callyde Jr
Lteo
marcos4503
zZAndersonZz
DUT
SpartanoLeonidas300
dstaroski
Gabriel César O
Gabriel César O
Callyde Jr
fecirineu
iagokennedyy
Mic4el
dstaroski
Joy29
PauloFR
Diego Felix
Gabriel César O
Zecandy
DUT
bitgames
Ghosthy
Ronmaster
PauloFR
marcos4503
DUT
rafaelllsd
marcos4503
g
Gabriel César O
marcos4503
DUT

[TUTORIAL] Som Dos Passos no FPS Controller (PELA TAG DO CHÃO)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

TUTORIAL [TUTORIAL] Som Dos Passos no FPS Controller (PELA TAG DO CHÃO)

Mensagem por MarcosSchultz em Qui Set 15, 2016 3:29 pm

Olá pessoal, elaborei uma maneira simples de executar o som dos passos de acordo com a tag do chão no FPS Controller que vem como padrão na Unity 5... trata-se de uma simples modificação no script do próprio controlador.

Vídeo explicativo:




Script modificado (basta substituir o script principal do seu FPS Controller por este):

Código:
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
using UnityStandardAssets.Utility;
using Random = UnityEngine.Random;

[Serializable]
public class SomPassos{
 public string tagchao;
 public AudioClip[] audios;
}

namespace UnityStandardAssets.Characters.FirstPerson
{
    [RequireComponent(typeof (CharacterController))]
    [RequireComponent(typeof (AudioSource))]
    public class FirstPersonController : MonoBehaviour
    {
        [SerializeField] private bool m_IsWalking;
        [SerializeField] private float m_WalkSpeed;
        [SerializeField] private float m_RunSpeed;
        [SerializeField] [Range(0f, 1f)] private float m_RunstepLenghten;
        [SerializeField] private float m_JumpSpeed;
        [SerializeField] private float m_StickToGroundForce;
        [SerializeField] private float m_GravityMultiplier;
        [SerializeField] private MouseLook m_MouseLook;
        [SerializeField] private bool m_UseFovKick;
        [SerializeField] private FOVKick m_FovKick = new FOVKick();
        [SerializeField] private bool m_UseHeadBob;
        [SerializeField] private CurveControlledBob m_HeadBob = new CurveControlledBob();
        [SerializeField] private LerpControlledBob m_JumpBob = new LerpControlledBob();
        [SerializeField] private float m_StepInterval;
        
 [Space(10)]
 public AudioClip[] SomPassosPadrao;
 public SomPassos[] SomDosPassos;
 string tagAtual;
 [Space(10)]

 [SerializeField] private AudioClip m_JumpSound;           // the sound played when character leaves the ground.
        [SerializeField] private AudioClip m_LandSound;           // the sound played when character touches back on ground.

        private Camera m_Camera;
        private bool m_Jump;
        private float m_YRotation;
        private Vector2 m_Input;
        private Vector3 m_MoveDir = Vector3.zero;
        private CharacterController m_CharacterController;
        private CollisionFlags m_CollisionFlags;
        private bool m_PreviouslyGrounded;
        private Vector3 m_OriginalCameraPosition;
        private float m_StepCycle;
        private float m_NextStep;
        private bool m_Jumping;
        private AudioSource m_AudioSource;

        // Use this for initialization
        private void Start()
        {
            m_CharacterController = GetComponent<CharacterController>();
            m_Camera = Camera.main;
            m_OriginalCameraPosition = m_Camera.transform.localPosition;
            m_FovKick.Setup(m_Camera);
            m_HeadBob.Setup(m_Camera, m_StepInterval);
            m_StepCycle = 0f;
            m_NextStep = m_StepCycle/2f;
            m_Jumping = false;
            m_AudioSource = GetComponent<AudioSource>();
 m_MouseLook.Init(transform , m_Camera.transform);
        }


        // Update is called once per frame
        private void Update()
        {
            RotateView();
            // the jump state needs to read here to make sure it is not missed
            if (!m_Jump)
            {
                m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
            }

            if (!m_PreviouslyGrounded && m_CharacterController.isGrounded)
            {
                StartCoroutine(m_JumpBob.DoBobCycle());
                PlayLandingSound();
                m_MoveDir.y = 0f;
                m_Jumping = false;
            }
            if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded)
            {
                m_MoveDir.y = 0f;
            }

            m_PreviouslyGrounded = m_CharacterController.isGrounded;
        }


        private void PlayLandingSound()
        {
            m_AudioSource.clip = m_LandSound;
            m_AudioSource.Play();
            m_NextStep = m_StepCycle + .5f;
        }


        private void FixedUpdate()
        {
            float speed;
            GetInput(out speed);
            // always move along the camera forward as it is the direction that it being aimed at
            Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x;

            // get a normal for the surface that is being touched to move along it
            RaycastHit hitInfo;
            Physics.SphereCast(transform.position, m_CharacterController.radius, Vector3.down, out hitInfo,
                               m_CharacterController.height/2f, Physics.AllLayers, QueryTriggerInteraction.Ignore);
            desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized;

            m_MoveDir.x = desiredMove.x*speed;
            m_MoveDir.z = desiredMove.z*speed;


            if (m_CharacterController.isGrounded)
            {
                m_MoveDir.y = -m_StickToGroundForce;

                if (m_Jump)
                {
                    m_MoveDir.y = m_JumpSpeed;
                    PlayJumpSound();
                    m_Jump = false;
                    m_Jumping = true;
                }
            }
            else
            {
                m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime;
            }
            m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime);

            ProgressStepCycle(speed);
            UpdateCameraPosition(speed);

            m_MouseLook.UpdateCursorLock();
        }


        private void PlayJumpSound()
        {
            m_AudioSource.clip = m_JumpSound;
            m_AudioSource.Play();
        }


        private void ProgressStepCycle(float speed)
        {
            if (m_CharacterController.velocity.sqrMagnitude > 0 && (m_Input.x != 0 || m_Input.y != 0))
            {
                m_StepCycle += (m_CharacterController.velocity.magnitude + (speed*(m_IsWalking ? 1f : m_RunstepLenghten)))*
                             Time.fixedDeltaTime;
            }

            if (!(m_StepCycle > m_NextStep))
            {
                return;
            }

            m_NextStep = m_StepCycle + m_StepInterval;

            PlayFootStepAudio();
        }


        private void PlayFootStepAudio()
        {
            if (!m_CharacterController.isGrounded)
            {
                return;
            }

 if (tagAtual != "Untagged") {
 for (int x = 0; x < SomDosPassos.Length; x++) {
 if (tagAtual == SomDosPassos [x].tagchao) {
 if (SomDosPassos [x].audios.Length > 1) {
 int n = Random.Range (1, SomDosPassos [x].audios.Length);
 m_AudioSource.clip = SomDosPassos [x].audios [n];
 m_AudioSource.PlayOneShot (m_AudioSource.clip);

 SomDosPassos [x].audios [n] = SomDosPassos [x].audios [0];
 SomDosPassos [x].audios [0] = m_AudioSource.clip;
 } else {
 m_AudioSource.clip = SomDosPassos [x].audios [0];
 m_AudioSource.PlayOneShot (m_AudioSource.clip);
 }
 break;
 }
 }
 }
 else {
 if (SomPassosPadrao.Length > 1) {
 int n = Random.Range (1, SomPassosPadrao.Length);
 m_AudioSource.clip = SomPassosPadrao [n];
 m_AudioSource.PlayOneShot (m_AudioSource.clip);

 SomPassosPadrao [n] = SomPassosPadrao [0];
 SomPassosPadrao [0] = m_AudioSource.clip;
 } else {
 m_AudioSource.clip = SomPassosPadrao[0];
 m_AudioSource.PlayOneShot (m_AudioSource.clip);
 }
 }
          
        }


        private void UpdateCameraPosition(float speed)
        {
            Vector3 newCameraPosition;
            if (!m_UseHeadBob)
            {
                return;
            }
            if (m_CharacterController.velocity.magnitude > 0 && m_CharacterController.isGrounded)
            {
                m_Camera.transform.localPosition =
                    m_HeadBob.DoHeadBob(m_CharacterController.velocity.magnitude +
                                      (speed*(m_IsWalking ? 1f : m_RunstepLenghten)));
                newCameraPosition = m_Camera.transform.localPosition;
                newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset();
            }
            else
            {
                newCameraPosition = m_Camera.transform.localPosition;
                newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset();
            }
            m_Camera.transform.localPosition = newCameraPosition;
        }


        private void GetInput(out float speed)
        {
            // Read input
            float horizontal = CrossPlatformInputManager.GetAxis("Horizontal");
            float vertical = CrossPlatformInputManager.GetAxis("Vertical");

            bool waswalking = m_IsWalking;

#if !MOBILE_INPUT
            // On standalone builds, walk/run speed is modified by a key press.
            // keep track of whether or not the character is walking or running
            m_IsWalking = !Input.GetKey(KeyCode.LeftShift);
#endif
            // set the desired speed to be walking or running
            speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed;
            m_Input = new Vector2(horizontal, vertical);

            // normalize input if it exceeds 1 in combined length:
            if (m_Input.sqrMagnitude > 1)
            {
                m_Input.Normalize();
            }

            // handle speed change to give an fov kick
            // only if the player is going to a run, is running and the fovkick is to be used
            if (m_IsWalking != waswalking && m_UseFovKick && m_CharacterController.velocity.sqrMagnitude > 0)
            {
                StopAllCoroutines();
                StartCoroutine(!m_IsWalking ? m_FovKick.FOVKickUp() : m_FovKick.FOVKickDown());
            }
        }


        private void RotateView()
        {
            m_MouseLook.LookRotation (transform, m_Camera.transform);
        }


        private void OnControllerColliderHit(ControllerColliderHit hit)
        {
 tagAtual = hit.transform.tag;
            Rigidbody body = hit.collider.attachedRigidbody;
            //dont move the rigidbody if the character is on top of it
            if (m_CollisionFlags == CollisionFlags.Below)
            {
                return;
            }

            if (body == null || body.isKinematic)
            {
                return;
            }
            body.AddForceAtPosition(m_CharacterController.velocity*0.1f, hit.point, ForceMode.Impulse);
        }
    }
}
avatar
MarcosSchultz
Administrador

Masculino PONTOS : 8987
REPUTAÇÃO : 1443
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Som Dos Passos no FPS Controller (PELA TAG DO CHÃO)

Mensagem por AndyShow em Qui Set 15, 2016 3:58 pm

Bacana, Bem Legal! Parabéns!
avatar
AndyShow
Instrutor

Masculino PONTOS : 2090
REPUTAÇÃO : 514
Idade : 34
Áreas de atuação : Blender e Unity
Respeito as regras :

Ver perfil do usuário http://mundounity3d.forumbom.com/

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Som Dos Passos no FPS Controller (PELA TAG DO CHÃO)

Mensagem por tom ramber em Sab Set 17, 2016 10:25 am

O Marcos tem como add sons de passos no Third Person
Controller ...em personagem modelo 3d
avatar
tom ramber
Avançado
Avançado

Masculino PONTOS : 402
REPUTAÇÃO : 7
Idade : 29
Áreas de atuação : Blender, Unity
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Som Dos Passos no FPS Controller (PELA TAG DO CHÃO)

Mensagem por MarcosSchultz em Seg Set 19, 2016 11:48 pm

Ter tem, mas vai ter que elaborar o próprio sistema, parecido com o que eu fiz aqui:



Vai ter que elaborar uma lógica própria já que o controlador não vem com o sistema em si.
avatar
MarcosSchultz
Administrador

Masculino PONTOS : 8987
REPUTAÇÃO : 1443
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] Som Dos Passos no FPS Controller (PELA TAG DO CHÃO)

Mensagem por dstaroski em Seg Nov 21, 2016 8:49 am

Parabéns brow! Exatamente o que eu precisava na etapa atual do meu projeto! Abração!
avatar
dstaroski
Instrutor

Masculino PONTOS : 1491
REPUTAÇÃO : 385
Idade : 28
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Daz3D and Gimp

Respeito as regras :

Ver perfil do usuário https://www.daz3d.com/gallery/users/1575361

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum