[RESOLVIDO] Problema Com o transform.LookAt!
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Problema Com o transform.LookAt!
Bom, eu coloco 2 objetos, um Player e um zombie, abaixo tem o código. O problema é que quando o zombie colide com a (AreaAtencao), no lugar dele seguir o Alvo(Player) Ele dar um giro negativo e vai para o lado oposto! Alguém pode me tirar essa dúvida!
Player>>
Player>>
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerBehaviour : MonoBehaviour {
public Animator Animachar;
public GameObject Personagem;
public int Velocidade;
public bool BtnPress1;
public bool BtnPress2;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Personagem.transform.Translate (Vector3.forward * Velocidade * Time.deltaTime);
if (Input.GetKeyDown (KeyCode.W)) {
BtnPress1 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 0, 0);
}
if (Input.GetKeyDown (KeyCode.S)) {
BtnPress1 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 180, 0);
}
if (Input.GetKeyDown (KeyCode.D)) {
BtnPress2 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 90, 0);
}
if (Input.GetKeyDown (KeyCode.A)) {
BtnPress2 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 270, 0);
}
if (BtnPress1 == false && BtnPress2 == false) {
Velocidade = 0;
Animachar.Play ("AnimaCharParado");
}
if (Input.GetKeyUp (KeyCode.D) || Input.GetKeyUp (KeyCode.A)) {
BtnPress2 = false;
}
if (Input.GetKeyUp (KeyCode.W) || Input.GetKeyUp (KeyCode.S)) {
BtnPress1 = false;
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ZombieBE : MonoBehaviour {
public GameObject Zombie;
public float VelocidadeZ;
public bool ZombieAtaca;
public Transform Alvo;
// Use this for initialization
void Start()
{
Alvo = GameObject.Find("PersonagemJogo").transform;
}
// Update is called once per frame
void Update()
{
Zombie.transform.Translate(Vector3.back * VelocidadeZ);
if (ZombieAtaca == true)
{
Zombie.transform.LookAt(Alvo);
}
}
void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "AreaAtencao")
{
ZombieAtaca = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "AreaAtencao")
{
ZombieAtaca = false;
}
}
}
Última edição por dstaroski em Qui Abr 19, 2018 10:34 am, editado 1 vez(es) (Motivo da edição : Resolvido)
MarcosUAC- Membro
- PONTOS : 2498
REPUTAÇÃO : 2
Idade : 22
Áreas de atuação : Tec.Hardware.
Tec.Redes.
Respeito as regras :
Re: [RESOLVIDO] Problema Com o transform.LookAt!
MarcosUAC escreveu:Bom, eu coloco 2 objetos, um Player e um zombie, abaixo tem o código. O problema é que quando o zombie colide com a (AreaAtencao), no lugar dele seguir o Alvo(Player) Ele dar um giro negativo e vai para o lado oposto! Alguém pode me tirar essa dúvida!
Player>>
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerBehaviour : MonoBehaviour {
public Animator Animachar;
public GameObject Personagem;
public int Velocidade;
public bool BtnPress1;
public bool BtnPress2;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Personagem.transform.Translate (Vector3.forward * Velocidade * Time.deltaTime);
if (Input.GetKeyDown (KeyCode.W)) {
BtnPress1 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 0, 0);
}
if (Input.GetKeyDown (KeyCode.S)) {
BtnPress1 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 180, 0);
}
if (Input.GetKeyDown (KeyCode.D)) {
BtnPress2 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 90, 0);
}
if (Input.GetKeyDown (KeyCode.A)) {
BtnPress2 = true;
Velocidade = 30;
Animachar.Play ("AnimaCharCorrendo");
Personagem.transform.rotation = Quaternion.Euler (0, 270, 0);
}
if (BtnPress1 == false && BtnPress2 == false) {
Velocidade = 0;
Animachar.Play ("AnimaCharParado");
}
if (Input.GetKeyUp (KeyCode.D) || Input.GetKeyUp (KeyCode.A)) {
BtnPress2 = false;
}
if (Input.GetKeyUp (KeyCode.W) || Input.GetKeyUp (KeyCode.S)) {
BtnPress1 = false;
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ZombieBE : MonoBehaviour {
public GameObject Zombie;
public float VelocidadeZ;
public bool ZombieAtaca;
public Transform Alvo;
// Use this for initialization
void Start()
{
Alvo = GameObject.Find("PersonagemJogo").transform;
}
// Update is called once per frame
void Update()
{
Zombie.transform.Translate(Vector3.back * VelocidadeZ);
if (ZombieAtaca == true)
{
Zombie.transform.LookAt(Alvo);
}
}
void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "AreaAtencao")
{
ZombieAtaca = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "AreaAtencao")
{
ZombieAtaca = false;
}
}
}
Isso ocorre por causa da exportação do modelo mesmo... é que geralmente softwares de modelagem 3D costumam ter uma noção de eixos diferentes, por exemplo : o Blender 3D, na direção para cima, é o eixo Z, e no Unity 3D para cima é o eixo Y, por isso acontece isso de a rotação ter esses erros. Acho que você poderia colocar o script em um objeto vazio, e parentar o mesh do zumbi ao objeto vazio. Deve funcionar.
Daniel Pires da Silva- Avançado
- PONTOS : 2754
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: [RESOLVIDO] Problema Com o transform.LookAt!
Putz amigo, vc tem razão!! Mas agora, oq eu faço?! Meu modelador é o MagicaVoxel ele não tem como definir os eixos que nem o blender... To seguindo uns tutoriais de um desenvolvedor que achei bem legal o estilo. Me travei nessa parte só...
MarcosUAC- Membro
- PONTOS : 2498
REPUTAÇÃO : 2
Idade : 22
Áreas de atuação : Tec.Hardware.
Tec.Redes.
Respeito as regras :
Re: [RESOLVIDO] Problema Com o transform.LookAt!
Amigo, faça como ele disse, crie um objeto vazio dentro de outro. Onde seu filho é o renderizador.
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO] Problema Com o transform.LookAt!
Obrigado Novamente, foi esse realmente o erro . Os modelos já vem préconfigurados no eixo -Z, aí eu tava tentanto mover .forward, depois veio uns bugs pq eu tava associando o rgb com o modelo, e não com o empty... Vlw tava 30 minutos martelando aki )))))))
MarcosUAC- Membro
- PONTOS : 2498
REPUTAÇÃO : 2
Idade : 22
Áreas de atuação : Tec.Hardware.
Tec.Redes.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
» Problema com transform
» [RESOLVIDO] Transform.up Muito rápido!
» [RESOLVIDO] Como saber se um Transform está se movendo?
» [RESOLVIDO] Como usar LookAt em apenas um eixo?
» Problema com transform
» [RESOLVIDO] Transform.up Muito rápido!
» [RESOLVIDO] Como saber se um Transform está se movendo?
» [RESOLVIDO] Como usar LookAt em apenas um eixo?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos