[Unity 5] Como verificar se player está se locomovendo ?
3 participantes
Página 1 de 1
[Unity 5] Como verificar se player está se locomovendo ?
Queria saber como faço pra saber se player esta em locomoção, tenho um script, que é tipo um rio, nele quando entra faz um som, daí queria fazer que a medida que ele anda na água, vai fazendo o som desejado, script:
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class WaterSound : MonoBehaviour {
public GameObject player;
public float velocidadePlayer,velocidadePlayerPadrao;
public AudioSource water,walkingInWater;
public bool naAgua;
// Use this for initialization
void Start () {
player = GameObject.FindGameObjectWithTag ("Player");
velocidadePlayer = 1.5f;
velocidadePlayerPadrao = 5;
}
// Update is called once per frame
void Update () {
if (naAgua == true && player.GetComponent<FirstPersonController> ().m_IsWalking == true) {
walkingInWater.PlayDelayed (0.5f*Time.deltaTime);
}
}
void OnTriggerEnter(Collider colider){
if (colider.gameObject.tag == "Player") {
naAgua = true;
water.Play ();
player.GetComponent<FirstPersonController> ().m_WalkSpeed = velocidadePlayer;
}
}
void OnTriggerExit(){
naAgua = false;
player.GetComponent<FirstPersonController> ().m_WalkSpeed = velocidadePlayerPadrao;
}
}
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
se não me engano FirstPersonController tem uma variável do tipo bool chamada isWalking ou
isWalk algo do gênero vc poder verificar
isWalk algo do gênero vc poder verificar
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
Tem o isWalking, mas parece que ele é bugado, sempre ta true, devia ser para animação do personweslleyFx escreveu:se não me engano FirstPersonController tem uma variável do tipo bool chamada isWalking ou
isWalk algo do gênero vc poder verificar
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
Dei uma lida no script do FPC, e vi que o IsWalking é true, quando player não está apertando lShift, ou seja correndoweslleyFx escreveu:se não me engano FirstPersonController tem uma variável do tipo bool chamada isWalking ou
isWalk algo do gênero vc poder verificar
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
RigidBody.Velocity pode te ajudar eu acho
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
Como poderia usar o rb velocity nesse caso ?RenanMSV escreveu:RigidBody.Velocity pode te ajudar eu acho
- Código:
if (player.GetComponent<Rigidbody> ().velocity.z >= 0.1f && naAgua == true) {
}
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
Quando o personagem está parado todas velocidades são iguais a 0. Ai voce compara com um vector 3 (0,0,0);
Esse script vai te ajudar a debugar
Apenas crie um UI Text e ligue ele no inspector. O script deve ser atachado ao objeto com Rigibody
Esse script vai te ajudar a debugar
- Código:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
private Rigidbody rb;
[SerializeField]
private UnityEngine.UI.Text txt;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
txt.text = rb.velocity.ToString ();
if (rb.velocity == new Vector3 (0, 0, 0))
txt.text += " Parado";
else
txt.text += " Movimento";
}
}
Apenas crie um UI Text e ligue ele no inspector. O script deve ser atachado ao objeto com Rigibody
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [Unity 5] Como verificar se player está se locomovendo ?
só que tem um problema para usar o rigidbody se o isKinematic estiver habilitado toda a fisica colisões e força não vai afetar o objeto
como o FirstPersonController usa o rigidbody com isKinematic e não aplica nenhum tipo de força para se movimentar então creio que não vai funcionar
vc poder fazer o mesmo esquema do script do RenanMSV só substituir o rigidbody por CharacterController que e usado no FirstPersonController
como o FirstPersonController usa o rigidbody com isKinematic e não aplica nenhum tipo de força para se movimentar então creio que não vai funcionar
vc poder fazer o mesmo esquema do script do RenanMSV só substituir o rigidbody por CharacterController que e usado no FirstPersonController
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Movement: MonoBehaviour {
public Text value;
private CharacterController characterController;
void Start ()
{
characterController = GetComponent<CharacterController>();
}
void Update ()
{
value.text = characterController.velocity.ToString();
}
}
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Tópicos semelhantes
» Verificar se player está posado em blogo
» Como verificar se o objeto esta em movimento?
» como verificar se um objeto com um nome especifico nao esta na cena
» Como verificar se foi meu player que tocou no CUBO?
» Como faço para o button da UI nova verificar enquanto esta pressionado
» Como verificar se o objeto esta em movimento?
» como verificar se um objeto com um nome especifico nao esta na cena
» Como verificar se foi meu player que tocou no CUBO?
» Como faço para o button da UI nova verificar enquanto esta pressionado
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos