[TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
+5
Phph09
dstaroski
kinematic
Zecandy
MarcosSchultz
9 participantes
Página 1 de 1
[TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Olá galera, estou trazendo este tutorialzinho simples mostrando como mover e rotacionar um objeto em relação a posição do mouse
Vídeo explicando:
Script utilizado:
Vídeo explicando:
Script utilizado:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class Movimento : MonoBehaviour {
RaycastHit hit;
Rigidbody rb;
Vector3 movimento;
public bool movimentoEmRelacaoAoMouse = false;
public float velocidadeMovimento = 10;
void Start () {
rb = GetComponent<Rigidbody> ();
}
void FixedUpdate () {
if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit, 100)) {
//
Vector3 playerToMouse = hit.point - transform.position;
playerToMouse.y = 0;
Quaternion newRotation = Quaternion.LookRotation (playerToMouse);
rb.MoveRotation (newRotation);
//movimento
if (movimentoEmRelacaoAoMouse) {
Vector3 forwordDirection = new Vector3 (transform.forward.x, 0, transform.forward.z) * Input.GetAxis ("Vertical");
Vector3 sideDirection = new Vector3 (transform.right.x, 0, transform.right.z) * Input.GetAxis ("Horizontal");
Vector3 finalDirection = forwordDirection + sideDirection;
if (finalDirection.magnitude > 1) {
finalDirection.Normalize ();
}
movimento = finalDirection * velocidadeMovimento * Time.deltaTime;
rb.MovePosition (transform.position + movimento);
}
else {
movimento = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxis ("Vertical"));
movimento = movimento.normalized * velocidadeMovimento * Time.deltaTime;
rb.MovePosition (transform.position + movimento);
}
}
}
}
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Marcos, como eu poderia adicionar animações a esse script?
Gostaria de colocar que o personagem andasse ou corresse quando apertando os direcionais.
Desde já agradeço quem puder ajudar!
Gostaria de colocar que o personagem andasse ou corresse quando apertando os direcionais.
Desde já agradeço quem puder ajudar!
kinematic- Iniciante
- PONTOS : 2535
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Parabéns ai cara! isso vai ajudar muito cara, tem vários usuários que procuram esse tipo de tuto.
Abração!
Abração!
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Pesquise por Animator, até mesmo o marcos tem um tutorial sobre isso;kinematic escreveu:Marcos, como eu poderia adicionar animações a esse script?
Gostaria de colocar que o personagem andasse ou corresse quando apertando os direcionais.
Desde já agradeço quem puder ajudar!
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
:oops: :oops:Phph09 escreveu:Pesquise por Animator, até mesmo o marcos tem um tutorial sobre isso;kinematic escreveu:Marcos, como eu poderia adicionar animações a esse script?
Gostaria de colocar que o personagem andasse ou corresse quando apertando os direcionais.
Desde já agradeço quem puder ajudar!
kinematic- Iniciante
- PONTOS : 2535
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
prof marco pode fazer um video de fazer parede igual the forest
tony- Iniciante
- PONTOS : 2377
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
man blz? como faço para meu personagem virar pro lado que a camera esta virada? tipo GTA se eu to virado pra um lado ai eu viro a camera pra tras e aperto W ele vira pro lado que estou olhando e começa a andar,
eu tentei usar esse seu e adaptar no meu mais nao ficou bom,o script de movimento q eu uso e esse
eu tentei usar esse seu e adaptar no meu mais nao ficou bom,o script de movimento q eu uso e esse
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(AudioSource))]
public class Easy_Jogador_Movimento : MonoBehaviour
{
Animator anim;
[Range(0, 20)]
public float frente = 0.1f;
public string AnimAndar;
[Space(20)]
[Range(0, 20)]
public float tras = 0.1f;
public string AnimAndarTras;
[Space(10)]
[Range(0, 20)]
public float lados = 0.1f;
public string AnimAndarLadoEsq;
public string AnimAndarLadoDir;
[Space(10)]
[Range(0, 20)]
public float CorrerLados = 0.2f;
public string AnimCorrerLadoEsq;
public string AnimCorrerLadoDir;
[Space(10)]
[Range(0, 20)]
public float correrFrente = 0.2f;
public string AnimCorrerFrente;
[Space(10)]
[Range(0, 20)]
public float correrTras = 0.1f;
public string AnimCorrerTras;
[Space(10)]
[Range(0, 500000)]
public float alturaPular = 800;
public string AnimPular;
float relogioPulo;
float tempoPulo;
bool pulo;
[Space(5)]
public bool UsarAnim = false;
[Space(5)]
public bool UsarSomDeMovimento = false;
[Tooltip("Aqui você coloca os soms que serão tocados quando estiver andando ,os soms serão tocados na ordem colocada")]
public AudioClip[] AudioAndar;
private int AudioAtualAndar;
private float TempoDoAudioAtualAndar, cronometroDoAudioAtualAndar, relogioTocarDenovoAndar;
[Range(0, 50)]
public float SomAndarTocarDenovoEm;
[Space(10)]
public bool UsarSomDePulo = false;
[Tooltip("Aqui você coloca os soms que serão tocados quando estiver pulando ,os soms serão tocados na ordem colocada")]
public AudioClip[] AudioPulo;
private int AudioAtualPulo;
private float TempoDoAudioAtualPulo, cronometroDoAudioAtualPulo, relogioTocarDenovoPulo;
[Range(0, 50)]
public float SomPuloTocarDenovoEm;
[Space(10)]
public bool UsarSomDeCorrer = false;
[Tooltip("Aqui você coloca os soms que serão tocados quando estiver correndo ,os soms serão tocados na ordem colocada")]
public AudioClip[] AudioCorrer;
private int AudioAtualCorrer;
private float TempoDoAudioAtualCorrer, cronometroDoAudioAtualCorrer, relogioTocarDenovoCorrer;
[Range(0, 50)]
public float SomCorrerTocarDenovoEm;
private Rigidbody rb;
private Vector3 jumpDirection;
void Start()
{
if(GetComponent<Rigidbody>())
{
rb = GetComponent<Rigidbody>();
}
if (GetComponent<Animator>())
{
anim = GetComponent<Animator>();
}
}
void Update()
{
if (Input.GetKey(KeyCode.W))
{
if (UsarSomDeMovimento)
{
SomAndar();
}
transform.Translate(0, 0, frente);
if (UsarAnim)
{
anim.SetBool(AnimAndar, true);
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimAndar, false);
}
}
if (Input.GetKey(KeyCode.S))
{
if (UsarSomDeMovimento)
{
SomAndar();
}
transform.Translate(0, 0, -tras);
if (UsarAnim)
{
anim.SetBool(AnimAndarTras, true);
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimAndarTras, false);
}
}
if (Input.GetKey(KeyCode.A))
{
if (UsarSomDeMovimento)
{
SomAndar();
}
transform.Translate(-lados, 0, 0);
if (UsarAnim)
{
anim.SetBool(AnimAndarLadoEsq, true);
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimAndarLadoEsq, false);
}
}
if (Input.GetKey(KeyCode.D))
{
if (UsarSomDeMovimento)
{
SomAndar();
}
transform.Translate(lados, 0, 0);
if (UsarAnim)
{
anim.SetBool(AnimAndarLadoDir, true);
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimAndarLadoDir, false);
}
}
if ((Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift)))
{
transform.Translate(0, 0, correrFrente);
if (UsarAnim)
{
anim.SetBool(AnimCorrerFrente, true);
}
if (UsarSomDeCorrer)
{
SomCorrer();
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimCorrerFrente, false);
}
}
if ((Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.LeftShift)))
{
transform.Translate(0, 0, correrTras = -0.1f);
if (UsarAnim)
{
anim.SetBool(AnimCorrerTras, true);
}
if (UsarSomDeCorrer)
{
SomCorrer();
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimCorrerTras, false);
}
}
if ((Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.LeftShift)))
{
transform.Translate(-CorrerLados, 0, 0);
if (UsarAnim)
{
anim.SetBool(AnimCorrerLadoEsq, true);
}
if (UsarSomDeCorrer)
{
SomCorrer();
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimCorrerLadoEsq, false);
}
}
if ((Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.LeftShift)))
{
transform.Translate(CorrerLados, 0, 0);
if (UsarAnim)
{
anim.SetBool(AnimCorrerLadoDir, true);
}
if (UsarSomDeCorrer)
{
SomCorrer();
}
}
else
{
if (UsarAnim)
{
anim.SetBool(AnimCorrerLadoDir, false);
}
}
if ((Input.GetKey(KeyCode.Space)))
{
pulo = true;
if (pulo)
{
rb.AddForce(0, alturaPular, 0);
if (UsarAnim)
{
anim.SetBool(AnimPular, true);
}
if (UsarSomDePulo)
{
SomPular();
}
}
}
else
{
relogioPulo += Time.deltaTime;
if(relogioPulo >= tempoPulo)
{
relogioPulo = 0;
}
if(relogioPulo == 0)
{
pulo = false;
}
if (!pulo)
{
rb.AddForce(0, -alturaPular, 0);
}
if (UsarAnim)
{
anim.SetBool(AnimPular, false);
}
}
}
void SomAndar()
{
relogioTocarDenovoAndar += Time.deltaTime;
if (relogioTocarDenovoAndar >= SomAndarTocarDenovoEm)
{
relogioTocarDenovoAndar = 0;
}
if (relogioTocarDenovoAndar == 0)
{
GetComponent<AudioSource>().playOnAwake = false;
GetComponent<AudioSource>().spatialBlend = 1;
cronometroDoAudioAtualAndar += Time.deltaTime;
if (cronometroDoAudioAtualAndar >= TempoDoAudioAtualAndar && AudioAtualAndar < AudioAndar.Length - 1)
{
cronometroDoAudioAtualAndar = 0;
AudioAtualAndar = AudioAtualAndar + 1;
TempoDoAudioAtualAndar = AudioAndar[AudioAtualAndar].length;
GetComponent<AudioSource>().PlayOneShot(AudioAndar[AudioAtualAndar]);
}
else if (cronometroDoAudioAtualAndar >= TempoDoAudioAtualAndar && AudioAtualAndar >= AudioAndar.Length - 1)
{
cronometroDoAudioAtualAndar = 0;
AudioAtualAndar = 0;
TempoDoAudioAtualAndar = AudioAndar[AudioAtualAndar].length;
GetComponent<AudioSource>().PlayOneShot(AudioAndar[AudioAtualAndar]);
}
}
}
void SomCorrer()
{
relogioTocarDenovoCorrer += Time.deltaTime;
if (relogioTocarDenovoCorrer >= SomCorrerTocarDenovoEm)
{
relogioTocarDenovoCorrer = 0;
}
if (relogioTocarDenovoCorrer == 0)
{
GetComponent<AudioSource>().playOnAwake = false;
GetComponent<AudioSource>().spatialBlend = 1;
cronometroDoAudioAtualCorrer += Time.deltaTime;
if (cronometroDoAudioAtualCorrer >= TempoDoAudioAtualCorrer && AudioAtualCorrer < AudioCorrer.Length - 1)
{
cronometroDoAudioAtualCorrer = 0;
AudioAtualCorrer = AudioAtualCorrer + 1;
TempoDoAudioAtualCorrer = AudioCorrer[AudioAtualCorrer].length;
GetComponent<AudioSource>().PlayOneShot(AudioCorrer[AudioAtualCorrer]);
}
else if (cronometroDoAudioAtualCorrer >= TempoDoAudioAtualCorrer && AudioAtualCorrer >= AudioCorrer.Length - 1)
{
cronometroDoAudioAtualCorrer = 0;
AudioAtualCorrer = 0;
TempoDoAudioAtualCorrer = AudioCorrer[AudioAtualCorrer].length;
GetComponent<AudioSource>().PlayOneShot(AudioCorrer[AudioAtualCorrer]);
}
}
}
void SomPular()
{
relogioTocarDenovoPulo += Time.deltaTime;
if (relogioTocarDenovoPulo >= SomPuloTocarDenovoEm)
{
relogioTocarDenovoPulo = 0;
}
if (relogioTocarDenovoPulo == 0)
{
GetComponent<AudioSource>().playOnAwake = false;
GetComponent<AudioSource>().spatialBlend = 1;
cronometroDoAudioAtualPulo += Time.deltaTime;
if (cronometroDoAudioAtualPulo >= TempoDoAudioAtualPulo && AudioAtualPulo < AudioPulo.Length - 1)
{
cronometroDoAudioAtualPulo = 0;
AudioAtualPulo = AudioAtualPulo + 1;
TempoDoAudioAtualPulo = AudioPulo[AudioAtualPulo].length;
GetComponent<AudioSource>().PlayOneShot(AudioPulo[AudioAtualPulo]);
}
else if (cronometroDoAudioAtualPulo >= TempoDoAudioAtualPulo && AudioAtualPulo >= AudioPulo.Length - 1)
{
cronometroDoAudioAtualPulo = 0;
AudioAtualPulo = 0;
TempoDoAudioAtualPulo = AudioPulo[AudioAtualPulo].length;
GetComponent<AudioSource>().PlayOneShot(AudioPulo[AudioAtualPulo]);
}
}
}
}
Unidade3d5- Avançado
- PONTOS : 3029
REPUTAÇÃO : 28
Respeito as regras :
Tegh- Avançado
- PONTOS : 2653
REPUTAÇÃO : 97
Idade : 23
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
@Unidade3d5
1- não recomendo translate para movimentação
2- você pode verificar "se apertou w" "olhe para frente da câmera no eixo y
3- se não funcionar, recomendo criar um topico
1- não recomendo translate para movimentação
2- você pode verificar "se apertou w" "olhe para frente da câmera no eixo y
- Código:
public GameObject cam;
void Look(){//ao apertar w chame essa void
transform.LookAt(cam.transform.positivo + cam.transform.forward*15);
transfira.eulerAngles = new Vector3(0,tranform.eulerAngles.y,0);
}//Fiz pelo Cel
3- se não funcionar, recomendo criar um topico
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Phph09 escreveu:@Unidade3d5
1- não recomendo translate para movimentação
2- você pode verificar "se apertou w" "olhe para frente da câmera no eixo y
- Código:
public GameObject cam;
void Look(){//ao apertar w chame essa void
transform.LookAt(cam.transform.positivo + cam.transform.forward*15);
transfira.eulerAngles = new Vector3(0,tranform.eulerAngles.y,0);
}//Fiz pelo Cel
3- se não funcionar, recomendo criar um topico
Vlw demais man funfou sim
- Código:
void Look()
{//ao apertar w chame essa void
transform.LookAt(cam.transform.position + cam.transform.forward * 15);
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
}
man oque vc indica usar para movimento de personagem?
Unidade3d5- Avançado
- PONTOS : 3029
REPUTAÇÃO : 28
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Olá amigo. É um top-down ou um Tps?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Recomendo Rigidbody.velocityUnidade3d5 escreveu:Phph09 escreveu:@Unidade3d5
1- não recomendo translate para movimentação
2- você pode verificar "se apertou w" "olhe para frente da câmera no eixo y
- Código:
public GameObject cam;
void Look(){//ao apertar w chame essa void
transform.LookAt(cam.transform.positivo + cam.transform.forward*15);
transfira.eulerAngles = new Vector3(0,tranform.eulerAngles.y,0);
}//Fiz pelo Cel
3- se não funcionar, recomendo criar um topico
Vlw demais man funfou sim
- Código:
void Look()
{//ao apertar w chame essa void
transform.LookAt(cam.transform.position + cam.transform.forward * 15);
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
}
man oque vc indica usar para movimento de personagem?
ou CharacterController.Move - nesse caso você "cria" a fisica
Uso CharacterController e nunca tive problema
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Phph09 escreveu:Recomendo Rigidbody.velocityUnidade3d5 escreveu:Phph09 escreveu:@Unidade3d5
1- não recomendo translate para movimentação
2- você pode verificar "se apertou w" "olhe para frente da câmera no eixo y
- Código:
public GameObject cam;
void Look(){//ao apertar w chame essa void
transform.LookAt(cam.transform.positivo + cam.transform.forward*15);
transfira.eulerAngles = new Vector3(0,tranform.eulerAngles.y,0);
}//Fiz pelo Cel
3- se não funcionar, recomendo criar um topico
Vlw demais man funfou sim
- Código:
void Look()
{//ao apertar w chame essa void
transform.LookAt(cam.transform.position + cam.transform.forward * 15);
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
}
man oque vc indica usar para movimento de personagem?
ou CharacterController.Move - nesse caso você "cria" a fisica
Uso CharacterController e nunca tive problema
estou usando so as animaçoes com root move ficou legal tbm
Unidade3d5- Avançado
- PONTOS : 3029
REPUTAÇÃO : 28
Respeito as regras :
Tópicos semelhantes
» AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
» [TUTORIAL] Atirar objeto para a posição do MOUSE
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» Como mudar rotacao de um objeto em relacao a posicao do outro objeto
» Sprite rotacionar de acordo com a posição do mouse
» [TUTORIAL] Atirar objeto para a posição do MOUSE
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» Como mudar rotacao de um objeto em relacao a posicao do outro objeto
» Sprite rotacionar de acordo com a posição do mouse
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos