Como fazer programação de um Boomerang em 3D?
4 participantes
Página 1 de 1
Como fazer programação de um Boomerang em 3D?
Olá, encontrei somente esse vídeo, mas não funciona.
Script do Boomerang:
Adicionar ao seu Jogador:
Fonte: Grimoire Hex
Script do Boomerang:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Boomerang : MonoBehaviour {
bool go;//Will Be Used To Change Direction Of Weapon
GameObject player;//Reference To The Main Character
GameObject sword;//Reference To The Main Character's Weapon
Transform itemToRotate;//The Weapon That Is A Child Of The Empty Game Object
Vector3 locationInFrontOfPlayer;//Location In Front Of Player To Travel To
// Use this for initialization
void Start ()
{
go = false; //Set To Not Return Yet
player = GameObject.Find("Akane");// The GameObject To Return To
sword = GameObject.Find("Sword");//The Weapon The Character Is Holding In The Scene
sword.GetComponent<MeshRenderer>().enabled = false; //Turn Off The Mesh Render To Make The Weapon Invisible
itemToRotate = gameObject.transform.GetChild(0); //Find The Weapon That Is The Child Of The Empty Object
//Adjust The Location Of The Player Accordingly, Here I Add To The Y position So That The Object Doesn't Go Too Low ...Also Pick A Location In Front Of The Player
locationInFrontOfPlayer = new Vector3(player.transform.position.x,player.transform.position.y + 1 ,player.transform.position.z) + player.transform.forward * 10f;
StartCoroutine(Boom());//Now Start The Coroutine
}
IEnumerator Boom()
{
go = true;
yield return new WaitForSeconds(1.5f);//Any Amount Of Time You Want
go = false;
}
// Update is called once per frame
void Update ()
{
itemToRotate.transform.Rotate(0, Time.deltaTime * 500, 0); //Rotate The Object
if (go)
{
transform.position = Vector3.MoveTowards(transform.position,locationInFrontOfPlayer, Time.deltaTime * 40); //Change The Position To The Location In Front Of The Player
}
if (!go)
{
transform.position = Vector3.MoveTowards(transform.position, new Vector3(player.transform.position.x,player.transform.position.y + 1,player.transform.position.z), Time.deltaTime * 40); //Return To Player
}
if(!go && Vector3.Distance(player.transform.position, transform.position) < 1.5 )
{
//Once It Is Close To The Player, Make The Player's Normal Weapon Visible, and Destroy The Clone
sword.GetComponent<MeshRenderer>().enabled = true;
Destroy(this.gameObject);
}
}
}
Adicionar ao seu Jogador:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
public GameObject boomer;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject clone;
clone = Instantiate(boomer, new Vector3(transform.position.x, transform.position.y + 1, transform.position.z), transform.rotation) as GameObject;
}
}
}
Fonte: Grimoire Hex
dkrazor- Avançado
- PONTOS : 2573
REPUTAÇÃO : 24
Idade : 35
Áreas de atuação : Design / Programador de jogos.
Respeito as regras :
Re: Como fazer programação de um Boomerang em 3D?
Acho que vc nao quer Estudar a Física de um Boomerang
forca da Gravidade+drag+massa+etc....hehe
Então Faz uma Animação, muito mais Fácil e Prático!
Fiz um com o "Animator",e a velocidade da Animação eu controlava ppor script Script
fica muito Legal!
// ahh pode Fazer com Splines tambem, fica tóp
http://catlikecoding.com/unity/tutorials/curves-and-splines/
forca da Gravidade+drag+massa+etc....hehe
Então Faz uma Animação, muito mais Fácil e Prático!
Fiz um com o "Animator",e a velocidade da Animação eu controlava ppor script Script
fica muito Legal!
// ahh pode Fazer com Splines tambem, fica tóp
http://catlikecoding.com/unity/tutorials/curves-and-splines/
Re: Como fazer programação de um Boomerang em 3D?
AndyShow escreveu:Acho que vc nao quer Estudar a Física de um Boomerang
forca da Gravidade+drag+massa+etc....hehe
Então Faz uma Animação, muito mais Fácil e Prático!
Fiz um com o "Animator",e a velocidade da Animação eu controlava ppor script Script
fica muito Legal!
// ahh pode Fazer com Splines tambem, fica tóp
http://catlikecoding.com/unity/tutorials/curves-and-splines/
Só quero apenas lançar um objeto tipo uns 10m e ele voltar para o personagem (tipo vai-e-volta). Não precisa de física ou fazer curvas. Bem simples (coisa q eu não sei kkk).
- Objeto (invisivel) fica junto com jogador.
- Apertar uma tecla, lançar o objeto
- depois de 3 segundos ele volta para o personagem.
- e fica invisível novamente.
dkrazor- Avançado
- PONTOS : 2573
REPUTAÇÃO : 24
Idade : 35
Áreas de atuação : Design / Programador de jogos.
Respeito as regras :
Re: Como fazer programação de um Boomerang em 3D?
- Código:
bool irOuVoltar;
GameObject objeto;
void Update(){
if(irOuVoltar)
objeto.trasnform.position = Vector3.MoveToWards (objeto.transform.position, transform.position.forward * 10, Time.deltaTime * 5f);
else
objeto.trasnform.position = Vector3.MoveToWards (objeto.transform.position, transform.position, Time.deltaTime * 5f);
}
Referências:
https://docs.unity3d.com/ScriptReference/Vector3.MoveTowards.html
É só isso mesmo, não sei se te ajuda. (Desculpa por não ter dito muita coisa em cima ^, é porque eu estou com pressa xd)
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: Como fazer programação de um Boomerang em 3D?
Souris escreveu:
- Código:
bool irOuVoltar;
GameObject objeto;
void Update(){
if(irOuVoltar)
objeto.trasnform.position = Vector3.MoveToWards (objeto.transform.position, transform.position.forward * 10, Time.deltaTime * 5f);
else
objeto.trasnform.position = Vector3.MoveToWards (objeto.transform.position, transform.position, Time.deltaTime * 5f);
}
Referências:
https://docs.unity3d.com/ScriptReference/Vector3.MoveTowards.html
É só isso mesmo, não sei se te ajuda. (Desculpa por não ter dito muita coisa em cima ^, é porque eu estou com pressa xd)
Esse código está funcionando perfeito.
- Código:
public Transform target;
public float speed;
void Update() {
float step = speed * Time.deltaTime;
transform.position = Vector3.MoveTowards(transform.position, target.position, step);
}
Mais o seu script não está funcionando. Erro com "Vector3.MoveToWards"
Minha idéia é:
- Deixar o boomerang como filho do player e invisivel (sem precisar ficar renderizando ou destruindo toda vez).
- quando eu aperta [B] ele fica visivel, vai até uns 5 metros e volta para posição (GameObject filhdo do Player, tipo "portaBoomerang").
e assim por diante.
dkrazor- Avançado
- PONTOS : 2573
REPUTAÇÃO : 24
Idade : 35
Áreas de atuação : Design / Programador de jogos.
Respeito as regras :
Re: Como fazer programação de um Boomerang em 3D?
A coisa mais fácil é fazer ele aparecer e desaparecer, o mais complicado vai ser ele ir e voltar em posição global men.. O script deu errado porque você não deixou ninguém como objeto..
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: Como fazer programação de um Boomerang em 3D?
Souris escreveu:A coisa mais fácil é fazer ele aparecer e desaparecer, o mais complicado vai ser ele ir e voltar em posição global men.. O script deu errado porque você não deixou ninguém como objeto..
Eu coloquei no Player e depois tbm na boomerang, mesmo erro:
dkrazor- Avançado
- PONTOS : 2573
REPUTAÇÃO : 24
Idade : 35
Áreas de atuação : Design / Programador de jogos.
Respeito as regras :
Re: Como fazer programação de um Boomerang em 3D?
hum pelo seu erro, meu campo d visao o "W" esta em maiusculo ->"Vector3.MoveToWards" deve ser isso ,
Última edição por felipehobs1 em Seg Mar 19, 2018 5:25 pm, editado 1 vez(es)
Re: Como fazer programação de um Boomerang em 3D?
Sorry, mas o correto é Vector3.MoveTowards Assim como mostra a API: https://docs.unity3d.com/ScriptReference/Vector3.MoveTowards.html
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: Como fazer programação de um Boomerang em 3D?
A melhor coisa à se fazer é utilizar o VS 2017 ou utilizar algum plug-in do Mono Develop que possui Auto Complete nos códigos, assim fica mais fácil ao criar códigos
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: Como fazer programação de um Boomerang em 3D?
felipehobs1 escreveu:hum pelo seu erro, meu campo d visao o "W" esta em maiusculo ->"Vector3.MoveToWards" deve ser isso ,
putz é mesmo, vou testar.
dkrazor- Avançado
- PONTOS : 2573
REPUTAÇÃO : 24
Idade : 35
Áreas de atuação : Design / Programador de jogos.
Respeito as regras :
Re: Como fazer programação de um Boomerang em 3D?
Consegui fazer do jeito q eu queria (um pouco diferente do q vcs fizeram, com mais linhas, mas ta funcionando), com até detecção de colisão com partes do cenário. Só falta colocar o intervalo de tempo ao pressionar um botao / tecla, pra não ficar dando bug no movimento.
dkrazor- Avançado
- PONTOS : 2573
REPUTAÇÃO : 24
Idade : 35
Áreas de atuação : Design / Programador de jogos.
Respeito as regras :
Tópicos semelhantes
» como fazer um sistema de construçao de base? (como se fosse o do rust)
» Duvida sobre como fazer uma flecha fazer um arco ate cair no ponto
» Como fazer um objeto se comportar como um Trampolim ? Pfv
» Alguém poderia fazer uma aula de como criar um sistema de fazer o personagem trocar de equipamento?
» Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
» Duvida sobre como fazer uma flecha fazer um arco ate cair no ponto
» Como fazer um objeto se comportar como um Trampolim ? Pfv
» Alguém poderia fazer uma aula de como criar um sistema de fazer o personagem trocar de equipamento?
» Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos