Alguem me ajuda em um script!
2 participantes
Página 1 de 1
Alguem me ajuda em um script!
Eu estou tentando fazer com que so faça a acão de "Pular" quando ja estiver em colisão com o chão, para n ficar "pulando" repetidamente sem parar.
- Código:
[size=14]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class Controller : MonoBehaviour {
public float speed = 6.0f;
GameObject cameraFPS;
Vector3 moveDirection = Vector3.zero;
CharacterController controller;
float rotacaoX = 0.0f, rotacaoY = 0.0f;
public float Sensibilidade;
void Start () {
transform.tag = "Player";
cameraFPS = GetComponentInChildren (typeof(Camera)).transform.gameObject;
cameraFPS.transform.localPosition = new Vector3 (0, 1, 0);
cameraFPS.transform.localRotation = Quaternion.identity;
controller = GetComponent<CharacterController> ();
}
void Update () {
Vector3 direcaoFrente = new Vector3 (cameraFPS.transform.forward.x, 0, cameraFPS.transform.forward.z);
Vector3 direcaoLado = new Vector3 (cameraFPS.transform.right.x, 0, cameraFPS.transform.right.z);
direcaoFrente.Normalize ();
direcaoLado.Normalize ();
direcaoFrente = direcaoFrente * Input.GetAxis ("Vertical");
direcaoLado = direcaoLado * Input.GetAxis ("Horizontal");
Vector3 direcFinal = direcaoFrente + direcaoLado;
if (direcFinal.sqrMagnitude > 1) {
direcFinal.Normalize ();
}
if (controller.isGrounded) {
moveDirection = new Vector3 (direcFinal.x, 0, direcFinal.z);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = 8.0f;
}
}
moveDirection.y -= 20.0f * Time.deltaTime;
controller.Move (moveDirection * Time.deltaTime);
CameraPrimeiraPessoa ();
}
void CameraPrimeiraPessoa(){
rotacaoX += Input.GetAxis ("Mouse X") * Sensibilidade;
rotacaoY += Input.GetAxis ("Mouse Y") * Sensibilidade;
rotacaoX = ClampAngleFPS (rotacaoX, -360, 360);
rotacaoY = ClampAngleFPS (rotacaoY, -80, 80);
Quaternion xQuaternion = Quaternion.AngleAxis (rotacaoX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis (rotacaoY, -Vector3.right);
Quaternion rotacFinal = Quaternion.identity * xQuaternion * yQuaternion;
cameraFPS.transform.localRotation = Quaternion.Lerp (cameraFPS.transform.localRotation, rotacFinal, Time.deltaTime * 10.0f);
}
float ClampAngleFPS(float angulo, float min, float max){
if (angulo < -360) {
angulo += 360;
}
if (angulo > 360) {
angulo -= 360;
}
return Mathf.Clamp (angulo, min, max);
}
}[/size]
gutovic29- Iniciante
- PONTOS : 2104
REPUTAÇÃO : 1
Respeito as regras :
Re: Alguem me ajuda em um script!
Para verificar se o personagem esta colidindo com o chão use o RayCast.
Neste caso ele só vai realizar a ação de pular se estiver colidindo com algo em baixo dele.
- Código:
if (Physics.Raycast(transform.position, -Vector3.up, 0.1))
{
GetComponent.<Rigidbody>().velocity = new Vector3 (0,10,0);
}
Neste caso ele só vai realizar a ação de pular se estiver colidindo com algo em baixo dele.
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
n funf, mas vlw por tentar ajudar!
gutovic29- Iniciante
- PONTOS : 2104
REPUTAÇÃO : 1
Respeito as regras :
Re: Alguem me ajuda em um script!
Vale lembrar que dependendo do tamanho do objeto o valor do RayCast muda.
Eu coloquei 0.1 para um objeto pequeno, mas se o seu for maior tera que aumentar o valor.
A dica é colocar um valor alto tipo 10 - 20 (Suficiente para ele poder pular 1x) E ir diminuindo.
Eu coloquei 0.1 para um objeto pequeno, mas se o seu for maior tera que aumentar o valor.
A dica é colocar um valor alto tipo 10 - 20 (Suficiente para ele poder pular 1x) E ir diminuindo.
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
Só uma explicaçã odo Raycast para você entender.
Ele emite um raio para uma direção, no nosso caso para baixo.
Se ele colidir ele vai fazer oque está dentro do IF, se não ele não faz nada.
Colocar um valor muito alto, gerara uma linha muito grande, então mesmo que ele pule, o RayCast do player continuara colidindo com o chão permitindo que ele pule novamente.
Por isso é importante ir ajustando de modo que a linha seja grande o bastante para ela colidir com o chão, mas não tão grande assim pq queremos que quando o personagem se afastar do chão ela não colida mais.
PS: O RayCast emite a linha a partir do centro do personagem ou seja do Pivo dele.(Seria a posição que sai aqueles 3 Gizmos X,Y,Z).
Não tem erro é só questão de ajustar mesmo.
Ele emite um raio para uma direção, no nosso caso para baixo.
Se ele colidir ele vai fazer oque está dentro do IF, se não ele não faz nada.
Colocar um valor muito alto, gerara uma linha muito grande, então mesmo que ele pule, o RayCast do player continuara colidindo com o chão permitindo que ele pule novamente.
Por isso é importante ir ajustando de modo que a linha seja grande o bastante para ela colidir com o chão, mas não tão grande assim pq queremos que quando o personagem se afastar do chão ela não colida mais.
PS: O RayCast emite a linha a partir do centro do personagem ou seja do Pivo dele.(Seria a posição que sai aqueles 3 Gizmos X,Y,Z).
Não tem erro é só questão de ajustar mesmo.
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
Se quiser pode excluir seu comando de pular de seu script e colocar este que vai funcionar :
Novamente, configure de acordo com o tamanho de seu player. No caso ele vai pular quando apertar a tecla P.
- Código:
if (Input.GetKeyDown("P") && Physics.Raycast(transform.position, -Vector3.up, 0.1))
{
GetComponent.<Rigidbody>().velocity = new Vector3 (0,10,0);
}
Novamente, configure de acordo com o tamanho de seu player. No caso ele vai pular quando apertar a tecla P.
Última edição por Magnatah em Qui Set 19, 2019 9:18 pm, editado 1 vez(es) (Motivo da edição : Coloque os Script na Área de Scripts. (Ajuda Bastante Para Ambos os Lados))
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
- Código:
if ( Input.GetKeyDown("P") && Physics.Raycast(transform.position, -Vector3.up, 0.1)) [size=14][/size]{[size=14][/size] GetComponent.<Rigidbody>().velocity = new Vector3 (0,10,0);[size=14][/size]}
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
- Código:
if (Input.GetKeyDown ("P") && Physics.Raycast(transform.position, -Vector3.up, 0.1)) [size=14][/size]{[size=14][/size] GetComponent.<Rigidbody>().velocity = new Vector3 (0,10,0);[size=14][/size]}
Acho que agr vai ;-;
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
Por algum motivo não estou conseguindo colocar o codigo dentro do script aqui do forum então vou deixar fora mesmo espero que desta vez seja a ultima kk
- Código:
if (Input.GetKeyDown("P") && Physics.Raycast(transform.position, -Vector3.up, 0.1))
{
GetComponent.<Rigidbody>().velocity = new Vector3 (0,10,0);
}
Última edição por Magnatah em Qui Set 19, 2019 9:19 pm, editado 1 vez(es) (Motivo da edição : Coloque os Script na Área de Scripts. (Ajuda Bastante Para Ambos os Lados))
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
Cara me desculpa por poluir seu post, mas não estou conseguindo colocar os códigos.
Espero que tenha entendido o conceito e que consiga pegar algo, mas não está dando para colocar algo no script :/
Espero que tenha entendido o conceito e que consiga pegar algo, mas não está dando para colocar algo no script :/
lesgoy- Mestre
- PONTOS : 3490
REPUTAÇÃO : 49
Respeito as regras :
Re: Alguem me ajuda em um script!
opaaa, vlw cara de vdd
gutovic29- Iniciante
- PONTOS : 2104
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» Alguem me ajuda com script simples?
» Alguém me ajuda com esse script ?
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Alguém me ajuda a resolver esses 3 erros no meu script C# pf
» Alguem me ajuda com script simples?
» Alguém me ajuda com esse script ?
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Alguém me ajuda a resolver esses 3 erros no meu script C# pf
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos