Som de passos 3º pessoas Unity C#
2 participantes
Página 1 de 1
Som de passos 3º pessoas Unity C#
Eu tentei adaptar alguns Scripts e dicas da net mas não deu muito certo, já tentei até com Colider nos pés mas não funcionou, agora com Raycast o som sai mas não sei como por um intervalo no som dos passos, será quem com uma outra variável iria ter o intervalo, ou tem um jeito melhor?Sou novo em programação e aos poucos ta saindo =D, desde já agradeço a ajuda!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character : MonoBehaviour
{
// Movimento do personagem
private bool character;
public float InputX, InputZ, velRotDesejada = 0.1f, permiteRotPlayer = 0.3f, speed;
public Vector3 dirMoveDesejada;
public Animator anim;
public Camera cam;
public Vector3 moveVector;
// som dos passos
public AudioClip[] sons;
private AudioClip clip;
private AudioSource tocando;
private bool esperando = false;
private float TempoDeEspera = 1f;
RaycastHit hit;
// Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
cam = Camera.main;
character = GetComponent<CharacterController>().enabled = true;
tocando = gameObject.GetComponent<AudioSource>();
}
// Update is called once per frame
void Update()
{
Passos();
}
void Passos()
{
if (esperando == true)
{
TempoDeEspera -= Time.deltaTime;
}
if (TempoDeEspera <= 0)
{
esperando = false;
}
if (esperando == false && speed >= 0.8f && Physics.Raycast(transform.position, Vector3.down, out hit))
{
if(hit.transform.gameObject.CompareTag("Madeira"))
{
clip = sons[0];
tocando.clip = clip;
tocando.Play();
esperando = true;
}
}
}
void InputMagnitude()
{
InputX = Input.GetAxis("Horizontal");
InputZ = Input.GetAxis("Vertical");
anim.SetFloat("Z", InputZ, 0.0f, Time.deltaTime * 2);
anim.SetFloat("X", InputX, 0.0f, Time.deltaTime * 2);
speed = new Vector2(InputX, InputZ).sqrMagnitude;
if (speed > permiteRotPlayer)
{
anim.SetFloat("InputMagnitude", speed, 0.1f, Time.deltaTime);
PlayerMoveRot();
}
else if (speed < permiteRotPlayer)
{
anim.SetFloat("InputMagnitude", speed, 0.1f, Time.deltaTime);
}
}
void PlayerMoveRot()
{
Quaternion rot = new Quaternion(0, 0, 0, 0);
InputX = Input.GetAxis("Horizontal");
InputZ = Input.GetAxis("Vertical");
Vector3 frente = cam.transform.forward;
Vector3 direita = cam.transform.right;
frente.Normalize();
direita.Normalize();
dirMoveDesejada = frente * InputZ + direita * InputX;
rot = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dirMoveDesejada), velRotDesejada);
transform.rotation = new Quaternion(0, rot.y, 0, rot.w);
}
}
merike11- MembroAvançado
- PONTOS : 2004
REPUTAÇÃO : 5
Respeito as regras :
Re: Som de passos 3º pessoas Unity C#
Existem vários jeitos de fazer o "footstep", antes você precisa definir qual.
O seu personagem é em primeira pessoa? se sim, nem precisa ser pelos 'pés' do personagem, da pra ser pelo deslocamento mesmo.
O seu personagem é em terceira pessoa? se sim, ai complica um pouco, pois depende da sua animação.
O seu personagem é em primeira pessoa? se sim, nem precisa ser pelos 'pés' do personagem, da pra ser pelo deslocamento mesmo.
O seu personagem é em terceira pessoa? se sim, ai complica um pouco, pois depende da sua animação.
Tópicos semelhantes
» Som dos passos no character controller Unity 5
» Gostaria De Saber Se Da Para Duas Pessoas Usarem O Unity Ao Mesmo Tempo
» [RESOLVIDO] Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
» Preciso de Pessoas no Máximo 3
» Game independente criado por 2 pessoas
» Gostaria De Saber Se Da Para Duas Pessoas Usarem O Unity Ao Mesmo Tempo
» [RESOLVIDO] Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
» Preciso de Pessoas no Máximo 3
» Game independente criado por 2 pessoas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos