duvida WayPoints (ou qualquer outra coisa que me ajude)
4 participantes
Página 1 de 1
duvida WayPoints (ou qualquer outra coisa que me ajude)
bom dia,tarde,noite galera
venho mais uma vez no forum pedir-lhe a vossa ajuda :D
eu estou com um script que peguei na net (ainda não sei funfa direito essa parada de waypoint)
mas seguinte
eu fiz uma gambiarra nele para que ele só ande para frente quando eu apertar o W
mas eu tambem queria que quando eu apertasse o S ele fizesse o mesmo caminho de volta entende
mas não estou conseguindo =\
o objeto não precisa nem virar de volta para traz, só dele fazer o caminho de volta ja ta valendo :D
se ficou confuso fala ae que eu tento explicar melhor, no mais é isso, ta ai o script...
venho mais uma vez no forum pedir-lhe a vossa ajuda :D
eu estou com um script que peguei na net (ainda não sei funfa direito essa parada de waypoint)
mas seguinte
eu fiz uma gambiarra nele para que ele só ande para frente quando eu apertar o W
mas eu tambem queria que quando eu apertasse o S ele fizesse o mesmo caminho de volta entende
mas não estou conseguindo =\
o objeto não precisa nem virar de volta para traz, só dele fazer o caminho de volta ja ta valendo :D
se ficou confuso fala ae que eu tento explicar melhor, no mais é isso, ta ai o script...
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WayPoints : MonoBehaviour
{
public Transform[] wayPointList;
public int currentWayPoint = 0;
Transform targetWayPoint;
public float speed = 4f;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (currentWayPoint < this.wayPointList.Length)
{
if (targetWayPoint == null)
targetWayPoint = wayPointList[currentWayPoint];
walk();
}
}
void walk()
{
transform.forward = Vector3.RotateTowards(transform.forward, targetWayPoint.position - transform.position, speed / 2 * Time.deltaTime, 0.0f);
if (Input.GetKey("w"))
{
transform.position = Vector3.MoveTowards(transform.position, targetWayPoint.position, speed * Time.deltaTime);
}
if (Input.GetKey("s"))
{
transform.position = Vector3.MoveTowards(transform.position, targetWayPoint.position, -speed * Time.deltaTime);
}
if (transform.position == targetWayPoint.position)
{
currentWayPoint++;
targetWayPoint = wayPointList[currentWayPoint];
}
}
}
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
Cara eu não entendo muito de WayPoints mas acho que vc colocar - Speed não vai fazer diferença, porque ele ainda vai continuar indo pro targetWayPoint voce teria que mudar fazendo esse target sendo o de tras e nao o da frente, acho que seria isso!
ygor18- Membro
- PONTOS : 3225
REPUTAÇÃO : 2
Idade : 27
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
Cara explica melhor, oq vc quer fazer? vc quer uma AI que segue waypoints ou vc quer controlar o objeto que ta no script? por ex aperta W S A D ele anda pra frente tras e lados? explica melhor rs
Unidade3d5- Avançado
- PONTOS : 3030
REPUTAÇÃO : 28
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
é o player, eu controlo o player ai quando eu apertar W ele vai pra frente seguindo os waypoints, mas eu quero que quando eu apertar o S ele volte pelo mesmo caminho que ele foi sabe, eu até consegui fazer quando eu aperto W e ele vai pra frente, mas não estou conseguindo quando eu aperto S para ele vir para trazUnidade3d5 escreveu:Cara explica melhor, oq vc quer fazer? vc quer uma AI que segue waypoints ou vc quer controlar o objeto que ta no script? por ex aperta W S A D ele anda pra frente tras e lados? explica melhor rs
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
- Código:
using UnityEngine;
using System.Collections;
public class jogadormovimento : MonoBehaviour {
Animator anim;
public float frente;
public float tras;
public float lados;
public float correr;
void Awake()
{
anim = GetComponent<Animator> ();
}
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
frente = 3 * Time.deltaTime;
tras = 2 * Time.deltaTime;
lados = 2 * Time.deltaTime;
frente = 2 * Time.deltaTime;
correr = 8 * Time.deltaTime;
if (Input.GetKey (KeyCode.W)) {
transform.Translate (0, 0, frente);
anim.SetBool ("frente", true);
}else{
anim.SetBool("frente", false);
}
if (Input.GetKey (KeyCode.S)) {
transform.Translate (0, 0,- tras);
anim.SetBool ("tras", true);
}else{
anim.SetBool("tras", false);
}
if (Input.GetKey (KeyCode.A)) {
transform.Translate (-lados, 0, 0);
anim.SetBool ("esquerda", true);
}else{
anim.SetBool("esquerda", false);
}
if (Input.GetKey (KeyCode.D)) {
transform.Translate (lados, 0, 0);
anim.SetBool ("direita", true);
}else{
anim.SetBool("direita", false);
}
if (Input.GetKey (KeyCode.LeftShift)) {
transform.Translate (0, 0, correr);
anim.SetBool ("correndo", true);
}else{
anim.SetBool("correndo", false);
}
}
}
Cara eu fiz esse script a um tempo atras ele controla o personagem e ainda toca animaçoes quando os botoes sao precionados,talvez te ajude
Unidade3d5- Avançado
- PONTOS : 3030
REPUTAÇÃO : 28
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
oww amigoUnidade3d5 escreveu:
- Código:
using UnityEngine;
using System.Collections;
public class jogadormovimento : MonoBehaviour {
Animator anim;
public float frente;
public float tras;
public float lados;
public float correr;
void Awake()
{
anim = GetComponent<Animator> ();
}
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
frente = 3 * Time.deltaTime;
tras = 2 * Time.deltaTime;
lados = 2 * Time.deltaTime;
frente = 2 * Time.deltaTime;
correr = 8 * Time.deltaTime;
if (Input.GetKey (KeyCode.W)) {
transform.Translate (0, 0, frente);
anim.SetBool ("frente", true);
}else{
anim.SetBool("frente", false);
}
if (Input.GetKey (KeyCode.S)) {
transform.Translate (0, 0,- tras);
anim.SetBool ("tras", true);
}else{
anim.SetBool("tras", false);
}
if (Input.GetKey (KeyCode.A)) {
transform.Translate (-lados, 0, 0);
anim.SetBool ("esquerda", true);
}else{
anim.SetBool("esquerda", false);
}
if (Input.GetKey (KeyCode.D)) {
transform.Translate (lados, 0, 0);
anim.SetBool ("direita", true);
}else{
anim.SetBool("direita", false);
}
if (Input.GetKey (KeyCode.LeftShift)) {
transform.Translate (0, 0, correr);
anim.SetBool ("correndo", true);
}else{
anim.SetBool("correndo", false);
}
}
}
Cara eu fiz esse script a um tempo atras ele controla o personagem e ainda toca animaçoes quando os botoes sao precionados,talvez te ajude
muito obrigado pela tentativa, mas o script de movimento eu tenho, eu estou com duvidas mesmo é sobre o waypoints, como faço pra ele seguir o waypoints inverso, ou seja os da frente e os de traz, respectivamente quando cada ação for acionada, mas muito obrigado mesmo, mas ainda não foi dessa
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
Cara cria uma bool que quando ele chegar no ultimo waypoint ela fique true e o currentWayPoint em vez de ++ receba --;
Zecandy- Mestre
- PONTOS : 3506
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
ja tentei e não funcionou, estou querendo algo mais assim olha...Zecandy escreveu:Cara cria uma bool que quando ele chegar no ultimo waypoint ela fique true e o currentWayPoint em vez de ++ receba --;
ou seja se eu apertar o W ele vai andando pra frente e fazendo as curvas sozinho saca, tanto pra frente quanto pra traz, e estou tentando fazer com waypoints, pra frente eu ja consegui, mas pra traz ta complicado =\
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
Olha Amigo ve se Ajuda este.
Testado
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Points : MonoBehaviour {
public Transform[] points; // Nessa Variavel vc Linka o Trajeto
public int nextPoint,pointaAtual;
public float velocidadeAndar; // Velocidade do Player
public Transform pointAnterior,pointProximo; // Variaveis para onde o Player ira olhar
void Start ()
{
}
void Update ()
{
pointAnterior = points[pointaAtual];
pointProximo = points[nextPoint];
if(transform.position == points[0].position)
{
pointaAtual = 0;
}else if(nextPoint >0)
{
pointaAtual = nextPoint -1;
}
if(Input.GetKey(KeyCode.W))
{
transform.LookAt(pointProximo);
transform.position = Vector3.MoveTowards(transform.position,points[nextPoint].position,velocidadeAndar*Time.deltaTime);
if(transform.position == points[nextPoint].position && nextPoint < points.Length-1)
{
nextPoint++;
}
}
if(Input.GetKey(KeyCode.S)&& pointaAtual>=0)
{
transform.LookAt(pointAnterior);
transform.position = Vector3.MoveTowards(transform.position,points[pointaAtual].position,velocidadeAndar*Time.deltaTime);
if(transform.position == points[pointaAtual].position)
{
if(nextPoint >0)
{
nextPoint--;
}
}
}
}
}
Testado
Zecandy- Mestre
- PONTOS : 3506
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Zecandy- Mestre
- PONTOS : 3506
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
opa irmão, deu certinho, mas eu vou testar aqui pois eu precisava disso pra fazer uma outra coisa por cima dela saca, e se não der eu volto aqui heheZecandy escreveu:Olha Amigo ve se Ajuda este.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Points : MonoBehaviour {
public Transform[] points; // Nessa Variavel vc Linka o Trajeto
public int nextPoint,pointaAtual;
public float velocidadeAndar; // Velocidade do Player
public Transform pointAnterior,pointProximo; // Variaveis para onde o Player ira olhar
void Start ()
{
}
void Update ()
{
pointAnterior = points[pointaAtual];
pointProximo = points[nextPoint];
if(transform.position == points[0].position)
{
pointaAtual = 0;
}else if(nextPoint >0)
{
pointaAtual = nextPoint -1;
}
if(Input.GetKey(KeyCode.W))
{
transform.LookAt(pointProximo);
transform.position = Vector3.MoveTowards(transform.position,points[nextPoint].position,velocidadeAndar*Time.deltaTime);
if(transform.position == points[nextPoint].position && nextPoint < points.Length-1)
{
nextPoint++;
}
}
if(Input.GetKey(KeyCode.S)&& pointaAtual>=0)
{
transform.LookAt(pointAnterior);
transform.position = Vector3.MoveTowards(transform.position,points[pointaAtual].position,velocidadeAndar*Time.deltaTime);
if(transform.position == points[pointaAtual].position)
{
if(nextPoint >0)
{
nextPoint--;
}
}
}
}
}
Testado
no mais, muito obrigado mesmo, se tiver alguma coisa que eu possa fazer é só falar, vlw
flw
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: duvida WayPoints (ou qualquer outra coisa que me ajude)
Nao esquente oq puder todos nos aqui nos ajudamos
Zecandy- Mestre
- PONTOS : 3506
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Tópicos semelhantes
» [Ajuda] WayPoints
» Como fazer um sistema de waypoints com espera.
» ((DUVIDA)) TELETRANSPORTE DO PLAYER DE UMA CENA A OUTRA.
» TRANSIÇÃO DE UMA CENA PARA OUTRA [DUVIDA]
» Dúvida, como transferir dados para outra cena (Iniciante)
» Como fazer um sistema de waypoints com espera.
» ((DUVIDA)) TELETRANSPORTE DO PLAYER DE UMA CENA A OUTRA.
» TRANSIÇÃO DE UMA CENA PARA OUTRA [DUVIDA]
» Dúvida, como transferir dados para outra cena (Iniciante)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos