[TUTORIAL] Movendo Objetos Usando o Raycast[stylo gancho]
Página 1 de 1
[TUTORIAL] Movendo Objetos Usando o Raycast[stylo gancho]
e ai galera ,boas noites ,como sempre, sempre ando nas praticas e avançando cada vez mas,nao costumo guardar muito meus scripts entao venho compartilhar com vcs é um pouco avançado,mas espero q seja util um dia hehe.
obs 1-o que ele faz?? assista a demostracao no video,
obs 2-como usar?
obs 3-geralmente meus tuto nao uso personagens,uso objetos simples para isso,mas vc criando e add no seu personagem pode dar de boa.
obs 4-nao uso rigidbody em testes,por tanto aqui estou usando Translate,
instruçoes:
1-crie um cubo e deixeo em formato de chao/piso e de o nome de chao para um melhor intedimento
2-crie um objeto capsule e de o Nome de Player
3-add um rigidbody no Player e marca as caixinha de rotaçao
4-crie um cubo e coloque como filho do player deixe ele no formato mostrado no video.
5-crie uns cubos e separe entre o chao e de uma tag para eles com o nome da tag "caixote"ou qualqer outra e modifique a tag do script e add rigidbody em todos e marque as caixinhas de rotaçao,
6-agora crie um script com o nome "PlayerMov" copie o codigo abaixo, cole e salve,e add no objeto Player.
obs: as teclas do Movimento do player podem ser mudado no Inspetor,as cetinhas do pc/notebook sao os controles d movimentos do guia/guincho.
obs 1-o que ele faz?? assista a demostracao no video,
obs 2-como usar?
obs 3-geralmente meus tuto nao uso personagens,uso objetos simples para isso,mas vc criando e add no seu personagem pode dar de boa.
obs 4-nao uso rigidbody em testes,por tanto aqui estou usando Translate,
instruçoes:
1-crie um cubo e deixeo em formato de chao/piso e de o nome de chao para um melhor intedimento
2-crie um objeto capsule e de o Nome de Player
3-add um rigidbody no Player e marca as caixinha de rotaçao
4-crie um cubo e coloque como filho do player deixe ele no formato mostrado no video.
5-crie uns cubos e separe entre o chao e de uma tag para eles com o nome da tag "caixote"ou qualqer outra e modifique a tag do script e add rigidbody em todos e marque as caixinhas de rotaçao,
6-agora crie um script com o nome "PlayerMov" copie o codigo abaixo, cole e salve,e add no objeto Player.
obs: as teclas do Movimento do player podem ser mudado no Inspetor,as cetinhas do pc/notebook sao os controles d movimentos do guia/guincho.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.AI;
using UnityEngine.EventSystems;
public class PlayerMov : MonoBehaviour
{
//teclas do player vc pode mudar no inspector
[Header("teclas Mov Player")]
public KeyCode[] Tecla= {KeyCode.W, KeyCode.S, KeyCode.A, KeyCode.D};
//objeto filho do player um tipo de guia para arragar objetos
public Transform TargetGuia;
//distancia do raycast
public float distance;
//velocidade e rotacao do player
public float speed, speedrot;
//raio
RaycastHit hit;
//condicoes booleanas ,podepegar e se ja tem aquele objeto no guincho targetguia
public bool PodePegar,TemObjeto;
private void Update()
{
//debug para testar a distancia do raio
Debug.DrawRay(TargetGuia.position, -TargetGuia.up * distance, Color.red);
if(Physics.Raycast(TargetGuia.position,-TargetGuia.up*distance,out hit, distance))
{
//defina uma tag caixote ou de sua preferencia e coloque no if
if (hit.collider.tag=="caixote")
{
//se colidir com objeto da determinada tag
PodePegar = true;
distance = hit.distance;
}
}
else
{
//se nao
PodePegar = false;
distance = 1;
}
//controla o player
KEYS();
//controla o guia
GuiaControl();
//tecla para pegar o objeto
PegarObj();
}
void PegarObj()
{
if (Input.GetKey(KeyCode.Space) && PodePegar && TemObjeto==false) {
if (!(TargetGuia.GetComponentInChildren<Transform>().tag == "caixote"))
{
hit.collider.transform.SetParent(TargetGuia.transform);
if (!hit.collider.gameObject.GetComponent<Rigidbody>())
{
hit.collider.gameObject.AddComponent<Rigidbody>();
}
hit.collider.gameObject.GetComponent<Rigidbody>().useGravity = false;
TemObjeto = true;
}
}
else
//ao soltar o spaco
if (Input.GetKeyUp(KeyCode.Space) &&TemObjeto == true)
{
if (TargetGuia.GetChild(0).gameObject.tag == "caixote")
{
hit.collider.transform.parent = null;
if (!hit.collider.gameObject.GetComponent<Rigidbody>())
{
hit.collider.gameObject.AddComponent<Rigidbody>();
}
hit.collider.gameObject.GetComponent<Rigidbody>().useGravity = true;
TemObjeto = false;
}
}
}
//controle Player Mov
void KEYS() {
if (Input.GetKey(Tecla[0]))
{
transform.Translate(new Vector3(0,0,speed * Time.deltaTime));
}
if (Input.GetKey(Tecla[1]))
{
transform.Translate(0,0,-speed * Time.deltaTime);
}
if (Input.GetKey(Tecla[2]))
{
transform.Rotate(0,-speedrot * Time.deltaTime,0);
}else
if (Input.GetKey(Tecla[3]))
{
transform.Rotate(new Vector3(0,speedrot * Time.deltaTime,0));
}
}
//mover o guia Ray
void GuiaControl()
{
if (Input.GetKey(KeyCode.LeftArrow))
{
TargetGuia.transform.Translate(new Vector3(0, 0, -speed * Time.deltaTime));
}
if (Input.GetKey(KeyCode.RightArrow))
{
TargetGuia.transform.Translate(new Vector3(0, 0, speed * Time.deltaTime));
}
if (Input.GetKey(KeyCode.UpArrow))
{
TargetGuia.transform.Translate(new Vector3(0, speed * Time.deltaTime,0));
}
else
if (Input.GetKey(KeyCode.DownArrow))
{
TargetGuia.transform.Translate(new Vector3(0, -speed * Time.deltaTime, 0));
}
else
{
TargetGuia.GetComponent<Rigidbody>().velocity = Vector3.zero;
}
}
}
Última edição por MarcosSchultz em Sáb Jan 27, 2018 9:39 pm, editado 2 vez(es) (Motivo da edição : correçao de palavras)
Tópicos semelhantes
» [RESOLVIDO] Como selecionar diferentes objetos com o clique do mouse usando raycast
» [TUTORIAL] Como criar tiro no Unity usando Raycast
» [RESOLVIDO]Checar touch em objetos e Raycast Raycast..
» Seguir inimigo com usando o raycast
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Como criar tiro no Unity usando Raycast
» [RESOLVIDO]Checar touch em objetos e Raycast Raycast..
» Seguir inimigo com usando o raycast
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos