Animação faz objeto mudar de posição?
3 participantes
Página 1 de 1
Animação faz objeto mudar de posição?
Eu criei um machado, animei e tal...
Eu fiz uma "animação" para que quando ele ficasse parado enquanto eu não pegava o objeto no chão, porém enquanto ele está no chão fica sem gravidade e nem se mexe. Como eu resolvo isso?
E tem outro problema parecido que é o principal...
Quando eu pego o objeto na mão ele tem que ir pra uma posição definida por um empty e assim se movimentar com o player, só que ele não vai para a posição do empty, ele simplesmente vai para longe, e se eu tento colocar a posição em 0,0,0 ele volta para a posição em que ele estava longe. Someone Help me
Eu fiz uma "animação" para que quando ele ficasse parado enquanto eu não pegava o objeto no chão, porém enquanto ele está no chão fica sem gravidade e nem se mexe. Como eu resolvo isso?
E tem outro problema parecido que é o principal...
Quando eu pego o objeto na mão ele tem que ir pra uma posição definida por um empty e assim se movimentar com o player, só que ele não vai para a posição do empty, ele simplesmente vai para longe, e se eu tento colocar a posição em 0,0,0 ele volta para a posição em que ele estava longe. Someone Help me
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
Amigo poste o script para podermos ajudar.
Zecandy- Mestre
- PONTOS : 3506
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: Animação faz objeto mudar de posição?
Você criou pelo Animation da Unity ou fora? A animação é para ser tocada quando o objeto está dropado, mas não funciona? Poste algumas fotos de como criou e como está, a hierarquia para podermos analisarmos certinho!
Re: Animação faz objeto mudar de posição?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AxeScript : MonoBehaviour {
public Transform NovaPosicaoAxe;
public Transform SaidaPosicaoAxe;
public Transform AxeTransform;
public Transform CameraRay;
public GameObject Axe;
public Rigidbody AxeRigidBody;
public static bool AxeFoiPego;
float DanoCausado = 25f;
public Animator CorteAnimator;
public RawImage ImagenMAO;
void Start () {
AxeFoiPego = false;
AxeRigidBody = GetComponent<Rigidbody> ();
AxeRigidBody.isKinematic = false;
ImagenMAO.enabled = false;
CorteAnimator.SetBool ("FazerNada", true);
}
void Update () {
ImagenMAO.enabled = false;
if(AxeFoiPego == true){
ImagenMAO.enabled = false;
}
//PEGAR MACHADO DO CHÃO
RaycastHit Colisao;
if (Physics.Raycast (CameraRay.transform.position, CameraRay.transform.forward, out Colisao, 3)) {
if (Colisao.transform.gameObject.tag == "Axe") {
Debug.Log ("Colidindo");
ImagenMAO.enabled = true;
if (AxeFoiPego == false) {
if (Input.GetKeyDown (KeyCode.E)) {
AxeTransform.position = NovaPosicaoAxe.position;
AxeFoiPego = true;
CorteAnimator.SetBool ("Idles", true);
CorteAnimator.SetBool ("FazerNada", false);
AxeRigidBody.isKinematic = true;
AxeTransform.rotation = NovaPosicaoAxe.rotation;
AxeTransform.SetParent (NovaPosicaoAxe);
}
}
}
}
//LARGAR MACHADO NO CHÃO
if(Input.GetKeyDown(KeyCode.G)){
if (AxeFoiPego == true) {
CorteAnimator.SetBool ("FazerNada", true);
CorteAnimator.SetBool ("Idles", false);
CorteAnimator.SetBool ("Cortar", false);
AxeRigidBody.isKinematic = false;
AxeTransform.position = SaidaPosicaoAxe.position;
AxeFoiPego = false;
AxeTransform.parent = null;
}
}
//EXECUTAR ANIMAÇÃO QUANDO FOR CORTAR ÁRVORES
if (AxeFoiPego == true) {
if (Colisao.transform.gameObject.tag == "Tree") {
if (Input.GetKeyDown (KeyCode.Mouse0)) {
CorteAnimator.SetBool ("Cortar", true);
CortarArvore ScriptArvore = Colisao.transform.GetComponent<CortarArvore> () as CortarArvore;
ScriptArvore.vida -= DanoCausado;
CorteAnimator.SetBool ("Idles", false);
}
}
}
}
}
Zecandy escreveu:Amigo poste o script para podermos ajudar.
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AxeScript : MonoBehaviour {
public Transform NovaPosicaoAxe;
public Transform SaidaPosicaoAxe;
public Transform AxeTransform;
public Transform CameraRay;
public GameObject Axe;
public Rigidbody AxeRigidBody;
public static bool AxeFoiPego;
float DanoCausado = 25f;
public Animator CorteAnimator;
public RawImage ImagenMAO;
void Start () {
AxeFoiPego = false;
AxeRigidBody = GetComponent<Rigidbody> ();
AxeRigidBody.isKinematic = false;
ImagenMAO.enabled = false;
CorteAnimator.SetBool ("FazerNada", true);
}
void Update () {
ImagenMAO.enabled = false;
if(AxeFoiPego == true){
ImagenMAO.enabled = false;
}
//PEGAR MACHADO DO CHÃO
RaycastHit Colisao;
if (Physics.Raycast (CameraRay.transform.position, CameraRay.transform.forward, out Colisao, 3)) {
if (Colisao.transform.gameObject.tag == "Axe") {
Debug.Log ("Colidindo");
ImagenMAO.enabled = true;
if (AxeFoiPego == false) {
if (Input.GetKeyDown (KeyCode.E)) {
AxeTransform.position = NovaPosicaoAxe.position;
AxeFoiPego = true;
CorteAnimator.SetBool ("Idles", true);
CorteAnimator.SetBool ("FazerNada", false);
AxeRigidBody.isKinematic = true;
AxeTransform.rotation = NovaPosicaoAxe.rotation;
AxeTransform.SetParent (NovaPosicaoAxe);
}
}
}
}
//LARGAR MACHADO NO CHÃO
if(Input.GetKeyDown(KeyCode.G)){
if (AxeFoiPego == true) {
CorteAnimator.SetBool ("FazerNada", true);
CorteAnimator.SetBool ("Idles", false);
CorteAnimator.SetBool ("Cortar", false);
AxeRigidBody.isKinematic = false;
AxeTransform.position = SaidaPosicaoAxe.position;
AxeFoiPego = false;
AxeTransform.parent = null;
}
}
//EXECUTAR ANIMAÇÃO QUANDO FOR CORTAR ÁRVORES
if (AxeFoiPego == true) {
if (Colisao.transform.gameObject.tag == "Tree") {
if (Input.GetKeyDown (KeyCode.Mouse0)) {
CorteAnimator.SetBool ("Cortar", true);
CortarArvore ScriptArvore = Colisao.transform.GetComponent<CortarArvore> () as CortarArvore;
ScriptArvore.vida -= DanoCausado;
CorteAnimator.SetBool ("Idles", false);
}
}
}
}
}
recagonlei escreveu:Você criou pelo Animation da Unity ou fora? A animação é para ser tocada quando o objeto está dropado, mas não funciona? Poste algumas fotos de como criou e como está, a hierarquia para podermos analisarmos certinho!
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
https://prnt.sc/hnk312recagonlei escreveu:Você criou pelo Animation da Unity ou fora? A animação é para ser tocada quando o objeto está dropado, mas não funciona? Poste algumas fotos de como criou e como está, a hierarquia para podermos analisarmos certinho!
Não, a animação quando está dropado não tem nada, o objeto está sendo mandado fazer nada.
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
- Código:
//LARGAR MACHADO NO CHÃO
if(Input.GetKeyDown(KeyCode.G)){
if (AxeFoiPego == true) {
CorteAnimator.SetBool ("FazerNada", true);
CorteAnimator.SetBool ("Idles", false);
CorteAnimator.SetBool ("Cortar", false);
AxeRigidBody.isKinematic = false;
AxeTransform.position = SaidaPosicaoAxe.position;
AxeFoiPego = false;
AxeTransform.parent = null;
}
}
Não seria nessa parte onde dropa, onde ele está mandando a animação fazer nada ativar? Não teria que ativar a transição para o IdleAxe?
Re: Animação faz objeto mudar de posição?
Não, ali estou mandando largar a arma no chão e não fazer nada. A animação idle é pra só quando ele estiver em mãos do player.recagonlei escreveu:
- Código:
//LARGAR MACHADO NO CHÃO
if(Input.GetKeyDown(KeyCode.G)){
if (AxeFoiPego == true) {
CorteAnimator.SetBool ("FazerNada", true);
CorteAnimator.SetBool ("Idles", false);
CorteAnimator.SetBool ("Cortar", false);
AxeRigidBody.isKinematic = false;
AxeTransform.position = SaidaPosicaoAxe.position;
AxeFoiPego = false;
AxeTransform.parent = null;
}
}
Não seria nessa parte onde dropa, onde ele está mandando a animação fazer nada ativar? Não teria que ativar a transição para o IdleAxe?
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
É que agora que falou, ficou meio ambíguo... Não entendi se tu criou a animação para o player ou para o machado(sim, não faz muito sentido), mas não entendi muito bem... O que não se mexe e fica sem gravidade?
Re: Animação faz objeto mudar de posição?
Por enquanto todas essas animações no script são só do machado.recagonlei escreveu:É que agora que falou, ficou meio ambíguo... Não entendi se tu criou a animação para o player ou para o machado(sim, não faz muito sentido), mas não entendi muito bem... O que não se mexe e fica sem gravidade?
O problema é que, no começo do jogo quando ele está jogado no chão ele fica parado no ar e estático, isso não acontecia antes de eu colocar animações, e acontece isso também quando largo ele no chão.
E o outro problema é que quando eu pego o machado do chão apertando E ele vai para outra posição em vez de ir para a posição pré definida por um objeto vazio.
é isso...
Caso não tenha entendido ainda eu posso explicar melhor com prints...
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
Agora entendi... O Root motion está ativo ou desativado? Faça o contrário e veja se funciona! E talvez seja por causa que talvez você trocou as posições do machado e ele fica estático globalmente...
Caso não consiga resolver, mais tarde quando eu estiver disponível eu posso prototipar algo do tipo para ver o que possa estar errado, dentro da Unity...
Caso não consiga resolver, mais tarde quando eu estiver disponível eu posso prototipar algo do tipo para ver o que possa estar errado, dentro da Unity...
Re: Animação faz objeto mudar de posição?
O root motion estava desativado, e quando eu ligo ele o machado vai para a posição certa, porém ainda fica sem gravidade. É como se a opção kinematic no rigidbody do machado estivesse ativada...recagonlei escreveu:Agora entendi... O Root motion está ativo ou desativado? Faça o contrário e veja se funciona! E talvez seja por causa que talvez você trocou as posições do machado e ele fica estático globalmente...
Caso não consiga resolver, mais tarde quando eu estiver disponível eu posso prototipar algo do tipo para ver o que possa estar errado, dentro da Unity...
Complicado :/
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Re: Animação faz objeto mudar de posição?
E tem mais uma coisa...recagonlei escreveu:Agora entendi... O Root motion está ativo ou desativado? Faça o contrário e veja se funciona! E talvez seja por causa que talvez você trocou as posições do machado e ele fica estático globalmente...
Caso não consiga resolver, mais tarde quando eu estiver disponível eu posso prototipar algo do tipo para ver o que possa estar errado, dentro da Unity...
Quando eu ativo o root motion as animações não são executadas mas aparecem certas de acordo com o Animation Controller, e quando está desativado o root motion o machado vai para a posição errada e as animações são executadas corretamente...
De qualquer forma obrigado por tentar ajudar...
GabrielBs1409- Membro
- PONTOS : 2848
REPUTAÇÃO : 6
Respeito as regras :
Tópicos semelhantes
» Como mudar rotacao de um objeto em relacao a posicao do outro objeto
» Objeto mudar posiçao de um eixo no ritmo da musica
» Como mudar a posição de um objeto constantemente sem estar na void Update
» Duvida usar posicao do mouse para mudar direcao de Ray
» Como faço para mudar a posição de um objeto para perto de outro.
» Objeto mudar posiçao de um eixo no ritmo da musica
» Como mudar a posição de um objeto constantemente sem estar na void Update
» Duvida usar posicao do mouse para mudar direcao de Ray
» Como faço para mudar a posição de um objeto para perto de outro.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos