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:
Animação faz objeto mudar de posição?
Nav mesh em tempo real e fazer as rodas girarem
[ERRO DO PHOTON] Script do Photon com a unity
esse e o novo jogo que estou criando "my dream" ,um projeto pequeno.
Desenho - Sword concept
Change Material
Jogo que estou desenvolvendo "Alone"
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[TUTORIAL] Evitar Sombras ULTRA escuras após trocar de cena
Gostaria De Entrar em Uma Equipe ! :D
Sumindo os detalhes no UV Mapping
[Artigo]Delegates - Entendendo e Aplicando na Unity
Raposa: Projeto Laranja - Meu jogo,O que acham?
Sistema de Futebol(Chutar bola e carrega-la até o gol)
Conversão C# para JavaScript
Enhance - Goodbye SDK fatigue! Ads and more in Minutes!
[RESOLVIDO] SUSPENSÃO
[Prototipo] : [MyLifeInSevenSeconds]
Fazer sombras usando sprites
Canvas: como trazer objeto pra frente de outro?
Meu primeiro Rpg
[RESOLVIDO] Dúvida com audio.stop e audio.play
save de objetos coletados
[RESOLVIDO] Animação alteração posição do objeto.
[RESOLVIDO] Animação De camera Procedural Tem como ?
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Fazer efeito de distorção
Problema na compilaçao para android
[TUTORIAL] Menu Pause AVANÇADO (Unity 5.3 ou superior)
Qual o melhor formato de Textura?
Movimento do Sonic
[AJUDA] CommandInvokationFailure: Failed to build apk
Pokémon TCG-Erro de tela rosa
Melhor lugar para Publicar uma Demo
[AJUDA] Sistema de chuva
Dúvida com simulação de marcha de carros..
Precisamos de um Level Desgner ou Programador, que entenda de Otimização de Senario
Dúvida se código da unity é obsoleto
Jumper boy
Demo Terror
Enfrente Seu Pesadelo
Alguem pode me dizer qual é a função que limita o framerate do game, no unity 5 ?
como fazer trocar a imagem q está no UI canvas ?
problemas ao sincronizar healthbar entre os player (photon)
Reload Arma
Servidores dedicados - BatchMode
Como dizer que um numero é diferente do outro?
Esconder-se estilo OutLast
Optimização do Android
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
Ativar animação
como criptografar um texto e descriptografar em c#
existe algum método para instanciar sprites ?
Como lançar um objeto para um local via touch?
Ajuda de como fazer um jogo
Ajuda com áudio de carro
Assets tanque de guerra
Como alterar rectTransform de objeto
Como acesso uma variável em outro script?
Barra de power
Preciso 1 Programador
[DEVLOG] Projeto - Pocket Girl Blade - Atualização
Problema na instalação do SDK Android
Ranking com nome
como ajustar o UnityEngine.UI.text via script para qualquer resolução?
PAGO POR TUTORIAIS EM VIDEO ALGUÉM INTERESSADO??
[RESOLVIDO] Alguem conhece um tutorial como este?
Alterar as qualidades das sombras com um dropdown
Como ter a mesma imagem em todos os dispositivos?
[TUTORIAL] Pegar e Dropar item no chao.[2.0]
MultiPlayer Local Android!
Asset Store quantos % fica pra ela?
Os Bentônicos - O Jogo
[TUTORIAL] Definindo as resoluções suportadas
[RESOLVIDO] Problema com Visual Studio
Freio abs duvida
Dicas para melhorar o desempenho?
desafio do codigo(Treinamento e raciocinio)
Script para visualizar objetos igual ao do Resident Evil 7
Alterar WaterMode do WaterProDaytime Via script
Como resolvo esse problema ?
Acionar mecanismos nativos do android
[TUTORIAL] Sistema de EXP, upar níveis, entre outros
[GUIA]Como desenvolver meu primeiro jogo?
Apenas uma pergunta
preciso de sugestões para o meu jogo (my dream)
Como criar um script capaz de detectar a velocidade de queda de um objeto no Unity 5 ?
[TUTORIAL] Script de arma automatica
[TUTORIAL]fazer os vidros quebrarem!
Modeladores (pedido de modelo pronto)
Raycast reconhecer qualquer ponto da tela em camera fixa
como posso colocar efeito sonoro em objeto?
[RESOLVIDO] Problema com a velocidade de parada de objeto
Como mudo o material de um objeto dentro do jogo?
[____ADERIR A UMA CATEGORIA NO FÓRUM____]
[RESOLVIDO] Como faço para adicionar Lens Flares no Unity 5 ?
[TUTORIAL] Importar carros do gta para a unity
Package vazada
Erro Script Photon
Hoje à(s) 2:48 pm
Hoje à(s) 2:38 pm
Hoje à(s) 1:43 pm
Hoje à(s) 1:39 pm
Hoje à(s) 12:35 pm
Hoje à(s) 12:24 pm
Hoje à(s) 11:59 am
Hoje à(s) 11:24 am
Hoje à(s) 10:54 am
Hoje à(s) 10:46 am
Hoje à(s) 9:00 am
Hoje à(s) 2:04 am
Hoje à(s) 1:24 am
Hoje à(s) 1:04 am
Ontem à(s) 11:54 pm
Ontem à(s) 11:37 pm
Ontem à(s) 11:09 pm
Ontem à(s) 8:55 pm
Ontem à(s) 8:23 pm
Ontem à(s) 2:20 pm
Ontem à(s) 1:49 pm
Ontem à(s) 1:22 pm
Ontem à(s) 1:11 pm
Ontem à(s) 12:57 pm
Ontem à(s) 12:41 pm
Ontem à(s) 11:37 am
Ontem à(s) 1:16 am
Ontem à(s) 12:56 am
Ontem à(s) 12:10 am
Ontem à(s) 12:08 am
Ter Dez 12, 2017 10:23 pm
Ter Dez 12, 2017 10:17 pm
Ter Dez 12, 2017 9:57 pm
Ter Dez 12, 2017 9:53 pm
Ter Dez 12, 2017 9:37 pm
Ter Dez 12, 2017 9:18 pm
Ter Dez 12, 2017 8:26 pm
Ter Dez 12, 2017 7:40 pm
Ter Dez 12, 2017 6:27 pm
Ter Dez 12, 2017 5:44 pm
Ter Dez 12, 2017 5:43 pm
Ter Dez 12, 2017 5:34 pm
Ter Dez 12, 2017 2:25 pm
Ter Dez 12, 2017 12:49 pm
Ter Dez 12, 2017 11:34 am
Ter Dez 12, 2017 4:34 am
Seg Dez 11, 2017 9:28 pm
Seg Dez 11, 2017 8:53 pm
Seg Dez 11, 2017 8:05 pm
Seg Dez 11, 2017 7:39 pm
Seg Dez 11, 2017 7:03 pm
Seg Dez 11, 2017 6:47 pm
Seg Dez 11, 2017 6:19 pm
Seg Dez 11, 2017 4:11 pm
Seg Dez 11, 2017 3:50 pm
Seg Dez 11, 2017 3:13 pm
Seg Dez 11, 2017 1:58 pm
Seg Dez 11, 2017 1:19 pm
Seg Dez 11, 2017 1:14 pm
Seg Dez 11, 2017 10:58 am
Seg Dez 11, 2017 9:28 am
Seg Dez 11, 2017 8:59 am
Seg Dez 11, 2017 8:55 am
Seg Dez 11, 2017 12:32 am
Dom Dez 10, 2017 11:53 pm
Dom Dez 10, 2017 9:12 pm
Dom Dez 10, 2017 8:34 pm
Dom Dez 10, 2017 6:16 pm
Dom Dez 10, 2017 6:16 pm
Dom Dez 10, 2017 6:14 pm
Dom Dez 10, 2017 6:13 pm
Dom Dez 10, 2017 4:50 pm
Dom Dez 10, 2017 1:31 pm
Dom Dez 10, 2017 11:29 am
Dom Dez 10, 2017 12:29 am
Sab Dez 09, 2017 11:31 pm
Sab Dez 09, 2017 11:17 pm
Sab Dez 09, 2017 9:56 pm
Sab Dez 09, 2017 7:16 pm
Sab Dez 09, 2017 7:11 pm
Sab Dez 09, 2017 4:55 pm
Sab Dez 09, 2017 2:33 pm
Sab Dez 09, 2017 1:15 pm
Sab Dez 09, 2017 12:15 am
Sex Dez 08, 2017 9:18 pm
Sex Dez 08, 2017 9:17 pm
Sex Dez 08, 2017 8:58 pm
Sex Dez 08, 2017 8:38 pm
Sex Dez 08, 2017 8:32 pm
Sex Dez 08, 2017 3:44 pm
Sex Dez 08, 2017 12:24 pm
Sex Dez 08, 2017 11:31 am
Qui Dez 07, 2017 9:35 pm
Qui Dez 07, 2017 8:52 pm
Qui Dez 07, 2017 6:12 pm
Qui Dez 07, 2017 4:40 pm
Qui Dez 07, 2017 4:18 pm
Qui Dez 07, 2017 3:18 pm
Qui Dez 07, 2017 11:35 am
GabrielBs1409
fabriciorsz34
PatifeCraft
Callyde Jr
recagonlei
recagonlei
BRGC
dstaroski
MarceloYBP
KatchupKarp
RW.
dimmuo
MarceloYBP
Água Sem Hidrogênio
recagonlei
recagonlei
WesleyLemosLeal
MarceloYBP
fabriciorsz34
Zecandy
MarceloYBP
Cristianolop
Phph09
XN4k3Dbr
BRGC
Phph09
Flávio
Eduardoro39
Phph09
MarceloYBP
DSK
Sshisbachza
recagonlei
natanael.olimpio
PatifeCraft
Madness
Jhonatham1
Flávio
googolepton
MarceloYBP
MarceloYBP
FelipeGD
dstaroski
Valakinhas
John Rambo
hen000
recagonlei
dimmuo
Água Sem Hidrogênio
natanael.olimpio
Zecandy
recagonlei
John Rambo
recagonlei
recagonlei
Nyland
erifmeurer
recagonlei
recagonlei
XN4k3Dbr
felipefell
dstaroski
dstaroski
Flávio
lesgoy
oilson
GabrielBs1409
recagonlei
lesgoy
glauco
recagonlei
recagonlei
Josivaldo Augusto
guimaraf
Flávio
Nyland
Ghosthy
felipehobs1
Phph09
BRGC
Fagner
XN4k3Dbr
Jorge Nunes
dimmuo
Josivaldo Augusto
recagonlei
FelipeGD
recagonlei
recagonlei
Spuk
Phph09
Phph09
Eduardoro39
Phph09
MarcosSchultz
Madness
mecjo
MRX
recagonlei

[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 : 9859
REPUTAÇÃO : 1706
Idade : 21
Á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 : 2378
REPUTAÇÃO : 553
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 : 599
REPUTAÇÃO : 10
Idade : 30
Á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 : 9859
REPUTAÇÃO : 1706
Idade : 21
Á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 : 2357
REPUTAÇÃO : 564
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