First Person Controller ( como funciona )
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
First Person Controller ( como funciona )
Alguem me explica como funciona o Script? Tipo, n faço a menor ideia do porque cada coisa esta ali.
https://www.youtube.com/watch?v=blO039OzUZc
me ajudem plz :D
- Código:
using UnityEngine;
using System.Collections;
public class camMouseLook : MonoBehaviour {
Vector2 mouseLook;
Vector2 smoothV;
public float sensitivity = 5.0f;
public float smoothing = 2.0f;
GameObject character;
Void Start() {
character = this.transform.parent.gameObject; // O Que significa essa linha? E daqui para frente eu n entendo mais nada ;-;
}
void Update () {
var md = new Vector2(Input.GetAxisRaw("Mouse X"), input.GetAxisRaw("mouse Y"));
md = Vector2.scale(md, new Vector2 (sensitivity * smoothing, sensitivity * smoothing));
smoothV.x = Mathf.Lerp(smoothV.x, md.x, lf / smoothing);
smoothV.y = Mathf.Lerp(smoothV.y, md.y, lf / smoothing);
mouseLook += smoothV;
transform.localRotation = Quaternion.AngleAxis (-mouseLook.y, Vector3.right);
character.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, character.transform.up);
}
}
https://www.youtube.com/watch?v=blO039OzUZc
me ajudem plz :D
Lotheadric- Iniciante
- PONTOS : 2862
REPUTAÇÃO : 0
Respeito as regras :
Re: First Person Controller ( como funciona )
13. Start, método que a unity utliza pra fazer inicialização
14. Referencia ao gameobject do transform do pai (no caso possivelmente o gameobject do player)
17. Update, método que a unity utiliza para atualizar frame a frame
18. Criou um novo Vector2 para captura o Input do mouse tanto no eixo x como no y
21. e 22. Continha basica de matematica, lerp é interpolação linear entre dois valores
As linhas de baixo vc pode ler na API:
https://docs.unity3d.com/ScriptReference/Quaternion.AngleAxis.html
https://docs.unity3d.com/ScriptReference/Transform-localRotation.html
https://docs.unity3d.com/ScriptReference/Vector2.html
https://docs.unity3d.com/ScriptReference/Mathf.Lerp.html
Bom sugiro que vc estude os principios, pq esse script aí é basico, nao tem mistério algum. São dúvidas que mostram realmente que vc nao estudou a parte basica da engine.
14. Referencia ao gameobject do transform do pai (no caso possivelmente o gameobject do player)
17. Update, método que a unity utiliza para atualizar frame a frame
18. Criou um novo Vector2 para captura o Input do mouse tanto no eixo x como no y
21. e 22. Continha basica de matematica, lerp é interpolação linear entre dois valores
As linhas de baixo vc pode ler na API:
https://docs.unity3d.com/ScriptReference/Quaternion.AngleAxis.html
https://docs.unity3d.com/ScriptReference/Transform-localRotation.html
https://docs.unity3d.com/ScriptReference/Vector2.html
https://docs.unity3d.com/ScriptReference/Mathf.Lerp.html
Bom sugiro que vc estude os principios, pq esse script aí é basico, nao tem mistério algum. São dúvidas que mostram realmente que vc nao estudou a parte basica da engine.
Re: First Person Controller ( como funciona )
Está aqui o script comentado:
mas vou te dizer, ele não faz muito sentido não. E tem linhas que nem vão funcionar.
- Código:
using UnityEngine; //biblioteca UnityEntine... permite utilizar funções da UnityEngine
using System.Collections; //biblioteca que traz consigo funções de listar, cálculos, etc
public class camMouseLook : MonoBehaviour { //Nome da classe, ou seja, do script, que no caso é "camMouseLook", e ele herda funções do MonoBehaviour, como por exemplo, o Start, Update, etc
Vector2 mouseLook; //variável invisível no inspector, que suporta um vetor (x,y)
Vector2 smoothV; //variável invisível no inspector, que suporta um vetor (x,y)
public float sensitivity = 5.0f; //variável que suporta números com virgula e é visível no inspector
public float smoothing = 2.0f; //variável que suporta números com virgula e é visível no inspector
GameObject character; //variável invisível ao inspector, que suporta qualquer objeto.
void Start() { //void Start (com V minúsculo). eh chamada apenas 1 vez no início do jogo, quando o script é ativado
character = this.transform.parent.gameObject; // a variável "character" recebe o objeto em que o script está linkado
}
void Update () { //void Update, é chamada o tempo todo, umas 40 vezes por segundo (depende dos FPS)
Vector2 md = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("mouse Y")); //troquei o "var" por Vector2, pois você está jogando um vetor na variável, e também troquei o segundo input por Input, com I maiúsculo
//nesta variável md, você está jogando os Inputs do mouse para um vetor, aonde a parte x vai ser o eixo horizontal e a aprte Y o vertical, ex: (InputMouseX, InputMouseY)
md = Vector2.Scale(md, new Vector2 (sensitivity * smoothing, sensitivity * smoothing)); //novamente, corrigi o S minúsculo do 'Scale'. Nesta linha. o Vector2.Scale multiplica os 2 vetores, mas isto não faz muito sentido aqui, pois tem o mesmo vetor ali.
smoothV.x = Mathf.Lerp(smoothV.x, md.x, lf / smoothing); //um Lerp está sendo feito para alterar o valor de smoothV.x para o Input do Mouse, mas isto não vai funcionar, pois a variável lf nem existe, e o Lerp deve ser construído dentro do vetor
smoothV.y = Mathf.Lerp(smoothV.y, md.y, lf / smoothing); //um Lerp está sendo feito para alterar o valor de smoothV.y para o Input do Mouse, mas isto não vai funcionar, pois a variável lf nem existe, e o Lerp deve ser construído dentro do vetor
mouseLook += smoothV; //você adiciona ao vetor "mouseLook" o vetor "smoothV"
transform.localRotation = Quaternion.AngleAxis (-mouseLook.y, Vector3.right); //você passa para o objeto que contém o script, a rotação do input do mouse.
character.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, character.transform.up); //você passa para o objeto que foi linkado na variável character, a rotação do input do mouse.
}
}
mas vou te dizer, ele não faz muito sentido não. E tem linhas que nem vão funcionar.
Re: First Person Controller ( como funciona )
Valeu cara, suas aulas no seu canal,cujo me inscrevi nas primeiras 3 aulas, e este forum, estao ajudando demais!MarcosSchultz escreveu:Está aqui o script comentado:
- Código:
using UnityEngine; //biblioteca UnityEntine... permite utilizar funções da UnityEngine
using System.Collections; //biblioteca que traz consigo funções de listar, cálculos, etc
public class camMouseLook : MonoBehaviour { //Nome da classe, ou seja, do script, que no caso é "camMouseLook", e ele herda funções do MonoBehaviour, como por exemplo, o Start, Update, etc
Vector2 mouseLook; //variável invisível no inspector, que suporta um vetor (x,y)
Vector2 smoothV; //variável invisível no inspector, que suporta um vetor (x,y)
public float sensitivity = 5.0f; //variável que suporta números com virgula e é visível no inspector
public float smoothing = 2.0f; //variável que suporta números com virgula e é visível no inspector
GameObject character; //variável invisível ao inspector, que suporta qualquer objeto.
void Start() { //void Start (com V minúsculo). eh chamada apenas 1 vez no início do jogo, quando o script é ativado
character = this.transform.parent.gameObject; // a variável "character" recebe o objeto em que o script está linkado
}
void Update () { //void Update, é chamada o tempo todo, umas 40 vezes por segundo (depende dos FPS)
Vector2 md = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("mouse Y")); //troquei o "var" por Vector2, pois você está jogando um vetor na variável, e também troquei o segundo input por Input, com I maiúsculo
//nesta variável md, você está jogando os Inputs do mouse para um vetor, aonde a parte x vai ser o eixo horizontal e a aprte Y o vertical, ex: (InputMouseX, InputMouseY)
md = Vector2.Scale(md, new Vector2 (sensitivity * smoothing, sensitivity * smoothing)); //novamente, corrigi o S minúsculo do 'Scale'. Nesta linha. o Vector2.Scale multiplica os 2 vetores, mas isto não faz muito sentido aqui, pois tem o mesmo vetor ali.
smoothV.x = Mathf.Lerp(smoothV.x, md.x, lf / smoothing); //um Lerp está sendo feito para alterar o valor de smoothV.x para o Input do Mouse, mas isto não vai funcionar, pois a variável lf nem existe, e o Lerp deve ser construído dentro do vetor
smoothV.y = Mathf.Lerp(smoothV.y, md.y, lf / smoothing); //um Lerp está sendo feito para alterar o valor de smoothV.y para o Input do Mouse, mas isto não vai funcionar, pois a variável lf nem existe, e o Lerp deve ser construído dentro do vetor
mouseLook += smoothV; //você adiciona ao vetor "mouseLook" o vetor "smoothV"
transform.localRotation = Quaternion.AngleAxis (-mouseLook.y, Vector3.right); //você passa para o objeto que contém o script, a rotação do input do mouse.
character.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, character.transform.up); //você passa para o objeto que foi linkado na variável character, a rotação do input do mouse.
}
}
mas vou te dizer, ele não faz muito sentido não. E tem linhas que nem vão funcionar.
Lotheadric- Iniciante
- PONTOS : 2862
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» First Person Character Controller - Como olhar por cantos?
» Como entrar e sair do carro usando o third person controller??
» Como fazer um botão Joystick que controle o First Person Controller?
» Third Person controller virando sozinho
» Duvida sobre first person controller unity 5
» Como entrar e sair do carro usando o third person controller??
» Como fazer um botão Joystick que controle o First Person Controller?
» Third Person controller virando sozinho
» Duvida sobre first person controller unity 5
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos