[TUTORIAL] Mover Objeto para lugar do click do Mouse
4 participantes
Página 1 de 1
[TUTORIAL] Mover Objeto para lugar do click do Mouse
Coloque este script no objeto ( o script deve ser em C# e ter o nome " Mover " )
Ele funciona em terrenos planos. Move o objeto para onde você clicou ( aconselho por rigidbody no objeto para cair caso fique no ar )
Tem este outro script também
- Código:
using UnityEngine;
using System.Collections;
public class Mover: MonoBehaviour {
private bool flag = false;
private Vector3 PontoDeLocomocao;
public float duration = 50.0f;
private float yAxis;
void Start(){
yAxis = gameObject.transform.position.y -1;
}
void Update () {
if((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetMouseButtonDown(0))){
RaycastHit hit;
Ray ray;
#if UNITY_EDITOR
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
#elif (UNITY_ANDROID || UNITY_IPHONE || UNITY_WP8)
#endif
if(Physics.Raycast(ray,out hit)){
flag = true;
PontoDeLocomocao = hit.point;
PontoDeLocomocao.y = yAxis;
Debug.Log(PontoDeLocomocao);
}
}
if(flag && !Mathf.Approximately(gameObject.transform.position.magnitude, PontoDeLocomocao.magnitude)){
gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, PontoDeLocomocao, 1/(duration*(Vector3.Distance(gameObject.transform.position, PontoDeLocomocao))));
}
else if(flag && Mathf.Approximately(gameObject.transform.position.magnitude, PontoDeLocomocao.magnitude)) {
flag = false;
Debug.Log("Eu estou aqui");
}
}
}
Ele funciona em terrenos planos. Move o objeto para onde você clicou ( aconselho por rigidbody no objeto para cair caso fique no ar )
OPÇÃO 2
Tem este outro script também
- Código:
using UnityEngine;
using System.Collections;
public class SeguirClique : MonoBehaviour {
public float speed = 0.1f;
private Vector3 target;
void Start () {
// rigidbody.freezeRotation = true;
target = transform.position;
}
void FixedUpdate () {
target.y = transform.position.y;
if (Input.GetButtonDown ("Fire1")) {
RaycastHit hit;
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, 1000)) {
target = hit.point;
}
}
if (Vector3.Distance(transform.position, target) > 0.1f) {
transform.LookAt(target);
transform.Translate(0,0,speed/100);
}
}
}
Re: [TUTORIAL] Mover Objeto para lugar do click do Mouse
Poderia fazer um vídeo tutorial? :D
riukuh- Iniciante
- PONTOS : 3088
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Mover Objeto para lugar do click do Mouse
riukuh escreveu:Poderia fazer um vídeo tutorial? :D
Por que, qual seria a dúvida ou o problema?
Até poderia, mas tem muitos tutoriais na frente...
Re: [TUTORIAL] Mover Objeto para lugar do click do Mouse
Bom dia,
como este topico trata de movimento de objeto, resolvi postar aqui minha duvida.
Sou novo no forum e tentei criar novo topico, mas não sabia que só a administração é quem faz isso.
Estou tentando fazer com que um objeto se movimente em um movimento "vai e volta", entre dois pontos (no caso seria duas posições no eixo X).
Suponhamos que na scene o objeto esteja na posição x -6 e vai se mover até a posiçãox 6, em seguida vai voltar até à posição -6 de novo, e novamente vai até a 6, isso vai se repetindo em vai e volta.
Eu escrevi esse script aqui:
using UnityEngine;
using System.Collections;
public class ScriptMover : MonoBehaviour {
public float speed;
public bool direcao;
public float duracaoDirecao = 2.5f;
private float tempoNaDirecao;
void Start () {
}
void Update() {
if (direcao) {
transform.eulerAngles = new Vector2(0, 180);
}
else {
transform.eulerAngles = new Vector2(0, 0);
}
transform.Translate(Vector2.right * speed * Time.deltaTime);
tempoNaDirecao += Time.deltaTime;
if (tempoNaDirecao >= duracaoDirecao) {
tempoNaDirecao = 0;
direcao = !direcao;
}
}
}
nesse script o objeto começa se movendo no sentido positivo e muda para a direção contraria quando dá 2.5 segundos, mas ele inverte seu angulo em Y como se agora estivesse olhando para trás.
eu quero que e o objeto sempre fique virado para frente, mas que mude a direção quando dá 2.5 segundos.
tem alguma forma de fazer esse efeito sem precisar de mexer no eulerAngles do objeto, mas que ele vá e volte?
agradeço ajuda!!
como este topico trata de movimento de objeto, resolvi postar aqui minha duvida.
Sou novo no forum e tentei criar novo topico, mas não sabia que só a administração é quem faz isso.
Estou tentando fazer com que um objeto se movimente em um movimento "vai e volta", entre dois pontos (no caso seria duas posições no eixo X).
Suponhamos que na scene o objeto esteja na posição x -6 e vai se mover até a posiçãox 6, em seguida vai voltar até à posição -6 de novo, e novamente vai até a 6, isso vai se repetindo em vai e volta.
Eu escrevi esse script aqui:
using UnityEngine;
using System.Collections;
public class ScriptMover : MonoBehaviour {
public float speed;
public bool direcao;
public float duracaoDirecao = 2.5f;
private float tempoNaDirecao;
void Start () {
}
void Update() {
if (direcao) {
transform.eulerAngles = new Vector2(0, 180);
}
else {
transform.eulerAngles = new Vector2(0, 0);
}
transform.Translate(Vector2.right * speed * Time.deltaTime);
tempoNaDirecao += Time.deltaTime;
if (tempoNaDirecao >= duracaoDirecao) {
tempoNaDirecao = 0;
direcao = !direcao;
}
}
}
nesse script o objeto começa se movendo no sentido positivo e muda para a direção contraria quando dá 2.5 segundos, mas ele inverte seu angulo em Y como se agora estivesse olhando para trás.
eu quero que e o objeto sempre fique virado para frente, mas que mude a direção quando dá 2.5 segundos.
tem alguma forma de fazer esse efeito sem precisar de mexer no eulerAngles do objeto, mas que ele vá e volte?
agradeço ajuda!!
Marc7- Mestre
- PONTOS : 3447
REPUTAÇÃO : 28
Respeito as regras :
Re: [TUTORIAL] Mover Objeto para lugar do click do Mouse
Marc7 escreveu:Bom dia,
como este topico trata de movimento de objeto, resolvi postar aqui minha duvida.
Sou novo no forum e tentei criar novo topico, mas não sabia que só a administração é quem faz isso.
Estou tentando fazer com que um objeto se movimente em um movimento "vai e volta", entre dois pontos (no caso seria duas posições no eixo X).
Suponhamos que na scene o objeto esteja na posição x -6 e vai se mover até a posiçãox 6, em seguida vai voltar até à posição -6 de novo, e novamente vai até a 6, isso vai se repetindo em vai e volta.
Eu escrevi esse script aqui:
using UnityEngine;
using System.Collections;
public class ScriptMover : MonoBehaviour {
public float speed;
public bool direcao;
public float duracaoDirecao = 2.5f;
private float tempoNaDirecao;
void Start () {
}
void Update() {
if (direcao) {
transform.eulerAngles = new Vector2(0, 180);
}
else {
transform.eulerAngles = new Vector2(0, 0);
}
transform.Translate(Vector2.right * speed * Time.deltaTime);
tempoNaDirecao += Time.deltaTime;
if (tempoNaDirecao >= duracaoDirecao) {
tempoNaDirecao = 0;
direcao = !direcao;
}
}
}
nesse script o objeto começa se movendo no sentido positivo e muda para a direção contraria quando dá 2.5 segundos, mas ele inverte seu angulo em Y como se agora estivesse olhando para trás.
eu quero que e o objeto sempre fique virado para frente, mas que mude a direção quando dá 2.5 segundos.
tem alguma forma de fazer esse efeito sem precisar de mexer no eulerAngles do objeto, mas que ele vá e volte?
agradeço ajuda!!
A area para postagem de duvidas é em "Duvidas em geral"
Aqui ja tem um tópico falando sobre o mesmo assunto, da uma olhada: https://www.schultzgames.com/t1852-como-fasso-isso
Re: [TUTORIAL] Mover Objeto para lugar do click do Mouse
Marc7 escreveu:Bom dia,
como este topico trata de movimento de objeto, resolvi postar aqui minha duvida.
Sou novo no forum e tentei criar novo topico, mas não sabia que só a administração é quem faz isso.
Estou tentando fazer com que um objeto se movimente em um movimento "vai e volta", entre dois pontos (no caso seria duas posições no eixo X).
Suponhamos que na scene o objeto esteja na posição x -6 e vai se mover até a posiçãox 6, em seguida vai voltar até à posição -6 de novo, e novamente vai até a 6, isso vai se repetindo em vai e volta.
Eu escrevi esse script aqui:
using UnityEngine;
using System.Collections;
public class ScriptMover : MonoBehaviour {
public float speed;
public bool direcao;
public float duracaoDirecao = 2.5f;
private float tempoNaDirecao;
void Start () {
}
void Update() {
if (direcao) {
transform.eulerAngles = new Vector2(0, 180);
}
else {
transform.eulerAngles = new Vector2(0, 0);
}
transform.Translate(Vector2.right * speed * Time.deltaTime);
tempoNaDirecao += Time.deltaTime;
if (tempoNaDirecao >= duracaoDirecao) {
tempoNaDirecao = 0;
direcao = !direcao;
}
}
}
nesse script o objeto começa se movendo no sentido positivo e muda para a direção contraria quando dá 2.5 segundos, mas ele inverte seu angulo em Y como se agora estivesse olhando para trás.
eu quero que e o objeto sempre fique virado para frente, mas que mude a direção quando dá 2.5 segundos.
tem alguma forma de fazer esse efeito sem precisar de mexer no eulerAngles do objeto, mas que ele vá e volte?
agradeço ajuda!!
Só a administração cria tópicos nas áreas "ADMINISTRAÇÃO" e "TUTORIAIS UNITY 3D"... as outras áreas são livres para os membros criarem tópicos.
Como as próprias regras do fórum dizem, se tiver uma dúvida, crie um tópico na área "Dúvidas em geral"...
Re: [TUTORIAL] Mover Objeto para lugar do click do Mouse
Ok Marcos vou seguir isso. valeu!
Marc7- Mestre
- PONTOS : 3447
REPUTAÇÃO : 28
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
» AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
» [TUTORIAL] Mover objetos com o mouse, estilo Amnesia
» [TUTORIAL] Atirar objeto para a posição do MOUSE
» Dúvida de como instanciar um onjeto com um click do mouse em determinado lugar.
» AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
» [TUTORIAL] Mover objetos com o mouse, estilo Amnesia
» [TUTORIAL] Atirar objeto para a posição do MOUSE
» Dúvida de como instanciar um onjeto com um click do mouse em determinado lugar.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos