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:
Ajudem com efeito "gelatina" em modelos.
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[_____CRONOGRAMA DO CANAL_____]
Testem meu Jogo de Aventura
objeto descer ao apertar um botão
Inteligência Artificial
Como fazer 1 Portal
[Assets] modelos 3d
Da para criar com o unity?
Como fazer aparecer notificações no celular android?
Existe algum tipo de FPSController para android?
QUIOFOBIA DEMO-JOGO DE TERROR INDIE
[Assets/Scripts] Repositório no Github com sistemas free.
[TUTORIAL] Unity 5 - Porta automática
[2 interiores Modelo] + Download Grátis --Para uso comercial!
Problema com o MonoDevelop
Como melhorar desempenho de animações
Cena Loading para carregar proximo Level
Sistema de build place
como criar um jogo igual a guitar hero?
(Dúvida) Erro criar sala com Photon.
Sistema de Skins estilo CsGo ou Critical Ops...
Dicas para otimizar o meu jogo
Sistema de construção estilo habbo
Duvida com script
[DUVIDA] Script Não Funciona
Como usar o Multi Touch para movimentar um personagem ?
[ERRO] Fatal Error Unity!!!
Fazer um Certo Ponto da mesh mudar de cor como um botão piscando
PlayerPrefs
[DÚVIDA]Texto Não Aparece Unity 5
[TUTORIAL] UNITY 5 - Efeito submerso (underwater effect), distorção da água e gotas na tela
Dúvida sobre instantiate!
Footsteps no CharacterController (Unity 5)
Como fazer objetos não atravessar paredes usando transform.Translate?
Quando meu inimigo morre todos morrem, alguem ajuda ?
Asset Store
Mudar cor de um material por Script de forma suave
[Dúvida] Otimização
[DUVIDA] Como utilizar o touch no Android em um jogo 2D
[TUTORIAL] Spawn de objetos aleatorios em lugares aleatorios
Mudança no NavMeshAgent?
Script para saber se ena está ativa ou carregada
Duvida
Inserir uma página da web dentro do meu jogo
[TUTORIAL] Acessar propriedades dos SHADERS através de SCRIPTS
// Sistema de Afogamento//
Inimigo seguir quando ver o player
Jogo da Memória para crianças. (Android)
(Dúvida) Mirar em terceira pessoa.
Eu produzi esse jogo na unity e gostaria que vocês testassem e avaliassem
I.A Que ataca qualquer coisa inclusive Players..
[DUVIDA]Pergunta Aleatória
Teclado igual o jogo do milhão
Modelos 3d para uso gratuito ou comercial
[TUTORIAL] Unity 5- Sistema de PLATAFORMAS COM ROTAS
///Duvida///
Unity 5 lag com muitas arvores e grass
Problema com "Non-convex MeshCollider"
[____REGRAS DO FÓRUM____]
modelo 3d rotaçao estranha
Direitos autorais de modelos 3D?
ZombieAI
Iluminação ou Shader Bugado ?!
como criar uma barra de vida?
[Asset]Terreno .dae
Problema com GetComponent
[RESOLVIDO] Como ativar e desativar um objeto.
COMO ATIVAR ANIMACAO EMPURRAR OBJETO?
[____TÓPICO LIVRE____] FALE O QUE QUISER
(DUVIDA) Empurrar caixas estilo Resident Evil
Erro de falsa memoria
preciso usar o Lerp fora do Update
[ AJUDA ]Probemas Com seleção de Carros.
Terminei meu game de terror...joguem...
[RESOLVIDO] COMO CRIAR UM ASSET ?
[RESOLVIDO] Como posto o link do game q fiz para o pessoal testar e avaliar?
Criação de tags para objetos
jogo estilo resident evil 4
[TUTORIAL] Pegar arma do chão ao Aperta E (Unity 5)
Direitos autorais
Terrain Bugado
AI Pedestres
Problema com texto ao fazer o build
Onde encontro aulas sobre shaders para a unity 5?
Audio Player C#
UNITY - MOVIE TEXTURE ON ANDROID
Recrutamento para jogo de sobrevivencia estilo DayZ/Rust/H1Z1
Destruir cubos em pedaços Com Um Progetil
(DUVIDA) troca textura em degradê
[RESOLVIDO] Movimento aleatório e suave de um objeto
Reproduzir vídeos do youtube
Return To Ruins Recrutando!
Script de mapa ramdomico?
DUVIDA - Compras de Assets
Versao Final Dark Dreams....agradeco a todos :)
meu jogo primeiro jogo de android
Acertar apenas um componente Collider2D em objeto com mais de um Collider
Como fazer movimento 'serpenteado'
Hoje à(s) 11:52 am
Hoje à(s) 9:18 am
Hoje à(s) 9:07 am
Hoje à(s) 12:36 am
Hoje à(s) 12:14 am
Ontem à(s) 10:18 pm
Ontem à(s) 9:15 pm
Ontem à(s) 8:45 pm
Ontem à(s) 8:21 pm
Ontem à(s) 8:16 pm
Ontem à(s) 7:20 pm
Ontem à(s) 5:16 pm
Ontem à(s) 4:54 pm
Ontem à(s) 4:40 pm
Ontem à(s) 4:01 pm
Ontem à(s) 3:26 pm
Ontem à(s) 1:53 pm
Ontem à(s) 1:18 pm
Ontem à(s) 1:06 pm
Ontem à(s) 11:42 am
Ontem à(s) 11:25 am
Ontem à(s) 10:15 am
Seg Fev 20, 2017 10:43 pm
Seg Fev 20, 2017 10:00 pm
Seg Fev 20, 2017 9:10 pm
Seg Fev 20, 2017 9:07 pm
Seg Fev 20, 2017 9:06 pm
Seg Fev 20, 2017 9:04 pm
Seg Fev 20, 2017 9:02 pm
Seg Fev 20, 2017 9:00 pm
Seg Fev 20, 2017 8:59 pm
Seg Fev 20, 2017 8:58 pm
Seg Fev 20, 2017 8:56 pm
Seg Fev 20, 2017 8:49 pm
Seg Fev 20, 2017 8:46 pm
Seg Fev 20, 2017 8:44 pm
Seg Fev 20, 2017 8:42 pm
Seg Fev 20, 2017 8:40 pm
Seg Fev 20, 2017 8:36 pm
Seg Fev 20, 2017 8:28 pm
Seg Fev 20, 2017 8:25 pm
Seg Fev 20, 2017 8:23 pm
Seg Fev 20, 2017 8:19 pm
Seg Fev 20, 2017 8:14 pm
Seg Fev 20, 2017 8:12 pm
Seg Fev 20, 2017 7:37 pm
Seg Fev 20, 2017 3:35 pm
Seg Fev 20, 2017 3:19 pm
Seg Fev 20, 2017 8:54 am
Seg Fev 20, 2017 12:10 am
Dom Fev 19, 2017 10:55 pm
Dom Fev 19, 2017 9:18 pm
Dom Fev 19, 2017 9:02 pm
Dom Fev 19, 2017 8:31 pm
Dom Fev 19, 2017 6:37 pm
Dom Fev 19, 2017 6:32 pm
Dom Fev 19, 2017 3:46 pm
Dom Fev 19, 2017 3:33 pm
Dom Fev 19, 2017 10:43 am
Sab Fev 18, 2017 11:53 pm
Sab Fev 18, 2017 9:17 pm
Sab Fev 18, 2017 8:34 pm
Sab Fev 18, 2017 8:13 pm
Sab Fev 18, 2017 6:58 pm
Sab Fev 18, 2017 5:32 pm
Sab Fev 18, 2017 4:20 pm
Sex Fev 17, 2017 9:27 pm
Sex Fev 17, 2017 7:18 pm
Sex Fev 17, 2017 9:54 am
Qui Fev 16, 2017 8:23 pm
Qui Fev 16, 2017 6:40 pm
Qui Fev 16, 2017 4:59 pm
Qui Fev 16, 2017 1:14 pm
Qui Fev 16, 2017 11:32 am
Qua Fev 15, 2017 11:24 pm
Qua Fev 15, 2017 10:10 pm
Qua Fev 15, 2017 8:12 pm
Qua Fev 15, 2017 3:08 pm
Qua Fev 15, 2017 2:52 pm
Qua Fev 15, 2017 2:43 pm
Qua Fev 15, 2017 1:20 pm
Qua Fev 15, 2017 12:10 pm
Qua Fev 15, 2017 9:26 am
Qua Fev 15, 2017 8:26 am
Qua Fev 15, 2017 8:22 am
Qua Fev 15, 2017 8:19 am
Qua Fev 15, 2017 8:17 am
Ter Fev 14, 2017 11:37 pm
Ter Fev 14, 2017 10:51 pm
Ter Fev 14, 2017 10:06 pm
Ter Fev 14, 2017 3:57 pm
Ter Fev 14, 2017 2:20 pm
Ter Fev 14, 2017 12:24 pm
Ter Fev 14, 2017 11:02 am
Ter Fev 14, 2017 7:43 am
Seg Fev 13, 2017 8:25 pm
Seg Fev 13, 2017 5:01 pm
Seg Fev 13, 2017 11:09 am
Seg Fev 13, 2017 11:02 am
lucasfera15
Fábiow775
tom ramber
MateusWTP
thiagograssi
zBanidor
tom ramber
PauloFR
Willian Wii
Willian Wii
Willian Wii
MateusWTP
dimmuo
silva75
MateusWTP
zZAndersonZz
sabbath
Marc7
dstaroski
thiagograssi
rafaelllsd
Sheyk
MarcosSchultz
Luiz Mauro TCC
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
CanabravaBR
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Zecandy
AndyShow
Pulitano
artplayer
niao
vegasbr
Manawydan
rafaelllsd
joabr
Blue Ark
Zecandy
AndyShow
regisbaldo
MarcosSchultz
joabr
joabr
tom ramber
lordstrik
Callyde Jr
PauloFR
cron
BananaSmith
LukiAli
Mic4el
Zecandy
LukiAli
erick.q.faria
dstaroski
hackernew404
LuizFixa3D
John Rambo
Marc7
dstaroski
Mic4el
joabr
lucasfera15
tom ramber
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
matheus1415
rafaelllsd
Édipo
Marc7
John Rambo
felipefell
André Damazio
dstaroski
hackernew404
niao
Marc7
Marc7

[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);
        }
    }
}

MarcosSchultz
Administrador

Masculino PONTOS : 7843
REPUTAÇÃO : 1069
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!

AndyShow
Instrutor

Masculino PONTOS : 1574
REPUTAÇÃO : 345
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

tom ramber
Avançado
Avançado

Masculino PONTOS : 258
REPUTAÇÃO : 2
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.

MarcosSchultz
Administrador

Masculino PONTOS : 7843
REPUTAÇÃO : 1069
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!

dstaroski
Instrutor

Masculino PONTOS : 774
REPUTAÇÃO : 193
Idade : 27
Áreas de atuação : Téc. Hardware e Redes, Programação C#, Desenvolvimento Android

Respeito as regras :

Ver perfil do usuário

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