[RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
- Código:
using UnityEngine;
using System.Collections;
public class Movement : MonoBehaviour {
//flag to check if the user has tapped / clicked.
//Set to true on click. Reset to false on reaching destination
private bool flag = false;
//destination point
private Vector3 endPoint;
//alter this to change the speed of the movement of player / gameobject
public float duration = 50.0f;
//vertical position of the gameobject
private float yAxis;
void Start(){
//save the y axis value of gameobject
yAxis = gameObject.transform.position.y;
}
// Update is called once per frame
void Update () {
//check if the screen is touched / clicked
if((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetMouseButtonDown(0)))
{
//declare a variable of RaycastHit struct
RaycastHit hit;
//Create a Ray on the tapped / clicked position
Ray ray;
//for unity editor
#if UNITY_EDITOR
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//for touch device
#elif (UNITY_ANDROID || UNITY_IPHONE || UNITY_WP8)
ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
#endif
//Check if the ray hits any collider
if(Physics.Raycast(ray,out hit))
{
//set a flag to indicate to move the gameobject
flag = true;
//save the click / tap position
endPoint = hit.point;
//as we do not want to change the y axis value based on touch position, reset it to original y axis value
endPoint.y = yAxis;
Debug.Log(endPoint);
}
}
//check if the flag for movement is true and the current gameobject position is not same as the clicked / tapped position
if(flag && !Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude)){ //&& !(V3Equal(transform.position, endPoint))){
//move the gameobject to the desired position
gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, endPoint, 1/(duration*(Vector3.Distance(gameObject.transform.position, endPoint))));
}
//set the movement indicator flag to false if the endPoint and current gameobject position are equal
else if(flag && Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude)) {
flag = false;
Debug.Log("I am here");
}
}
}
Última edição por MarcosSchultz em Qua Jun 27, 2018 1:21 am, editado 3 vez(es) (Motivo da edição : Inserido ícone)
niovery- Membro
- PONTOS : 2848
REPUTAÇÃO : 5
Idade : 25
Respeito as regras :
Re: [RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
Faz uma verificação do tipo:
Espero que você tenha entendido >_O.
- Código:
//Lógica:
int y, Ysalvo;
void Update(){
if (y != Ysalvo)
y = Ysalvo;
//Ativar animação
}else{
//Animação de ficar parado
}
Espero que você tenha entendido >_O.
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] Como ativar animação quando o objeto se move ?? sem rigidbody
Bom dia! tópico aberto na área errada, afinal não é um tutorial. Movido o mesmo para a área correta, dúvidas em geral. Mais atenção ao abrir seus tópicos, vamos manter o fórum organizado.niovery escreveu:
- Código:
using UnityEngine;
using System.Collections;
public class Movement : MonoBehaviour {
//flag to check if the user has tapped / clicked.
//Set to true on click. Reset to false on reaching destination
private bool flag = false;
//destination point
private Vector3 endPoint;
//alter this to change the speed of the movement of player / gameobject
public float duration = 50.0f;
//vertical position of the gameobject
private float yAxis;
void Start(){
//save the y axis value of gameobject
yAxis = gameObject.transform.position.y;
}
// Update is called once per frame
void Update () {
//check if the screen is touched / clicked
if((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetMouseButtonDown(0)))
{
//declare a variable of RaycastHit struct
RaycastHit hit;
//Create a Ray on the tapped / clicked position
Ray ray;
//for unity editor
#if UNITY_EDITOR
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//for touch device
#elif (UNITY_ANDROID || UNITY_IPHONE || UNITY_WP8)
ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
#endif
//Check if the ray hits any collider
if(Physics.Raycast(ray,out hit))
{
//set a flag to indicate to move the gameobject
flag = true;
//save the click / tap position
endPoint = hit.point;
//as we do not want to change the y axis value based on touch position, reset it to original y axis value
endPoint.y = yAxis;
Debug.Log(endPoint);
}
}
//check if the flag for movement is true and the current gameobject position is not same as the clicked / tapped position
if(flag && !Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude)){ //&& !(V3Equal(transform.position, endPoint))){
//move the gameobject to the desired position
gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, endPoint, 1/(duration*(Vector3.Distance(gameObject.transform.position, endPoint))));
}
//set the movement indicator flag to false if the endPoint and current gameobject position are equal
else if(flag && Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude)) {
flag = false;
Debug.Log("I am here");
}
}
}
Abraço!
Re: [RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
Boa noite, tenho uma duvida sobre animaçao.
Tenho duas animaçoes (pegar filmadora) e (guardar filmadora), fiz uma condicao int entre 0 e 1 para escolher a animaçao.A questao e que nao consigo fazer transiçao das animaçoes com apenas uma tecla, tive que colocar uma tecla para cada animaçao.
tem como fazer a transicao de uma animaçao para outra com apenas uma tecla?
vou deixar o meu script e gostaria de uma ajuda, desde ja muito obrigado pela atençao!
Tenho duas animaçoes (pegar filmadora) e (guardar filmadora), fiz uma condicao int entre 0 e 1 para escolher a animaçao.A questao e que nao consigo fazer transiçao das animaçoes com apenas uma tecla, tive que colocar uma tecla para cada animaçao.
tem como fazer a transicao de uma animaçao para outra com apenas uma tecla?
vou deixar o meu script e gostaria de uma ajuda, desde ja muito obrigado pela atençao!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class filmadoraanim : MonoBehaviour {
private Animator filmadora;
void Start () {
filmadora = GetComponent<Animator> ();
}
void Update () {
if (Input.GetKeyDown ("c")) {
filmadora.SetInteger("condicao", 0);
}
if (Input.GetKeyDown ("v")) {
filmadora.SetInteger("condicao", 1);
}
}
}
BrazaTattoo- Membro
- PONTOS : 3260
REPUTAÇÃO : 24
Respeito as regras :
Re: [RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
Boa noite! por gentileza, abra um tópico com essa dúvida em Dúvidas em geral. Assim será mais fácil para alguém te ajudar.BrazaTattoo escreveu:Boa noite, tenho uma duvida sobre animaçao.
Tenho duas animaçoes (pegar filmadora) e (guardar filmadora), fiz uma condicao int entre 0 e 1 para escolher a animaçao.A questao e que nao consigo fazer transiçao das animaçoes com apenas uma tecla, tive que colocar uma tecla para cada animaçao.
tem como fazer a transicao de uma animaçao para outra com apenas uma tecla?
vou deixar o meu script e gostaria de uma ajuda, desde ja muito obrigado pela atençao!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class filmadoraanim : MonoBehaviour {
private Animator filmadora;
void Start () {
filmadora = GetComponent<Animator> ();
}
void Update () {
if (Input.GetKeyDown ("c")) {
filmadora.SetInteger("condicao", 0);
}
if (Input.GetKeyDown ("v")) {
filmadora.SetInteger("condicao", 1);
}
}
}
Abraço!
Re: [RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
Obrigado amigo vou fazer isso.
BrazaTattoo- Membro
- PONTOS : 3260
REPUTAÇÃO : 24
Respeito as regras :
Re: [RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
Faça assim:
- Código:
bool pegou = false;
if (Input.GetKeyDown(KeyCode.C)){
if (pegou)
filmadora.SetInteger("condicao", 0);
else
filmadora.SetInteger("condicao", 1);
pegou != pegou;
}
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] Como ativar animação quando o objeto se move ?? sem rigidbody
Obrigadooo!! Funcionou perfeitamente!
- Código:
using System.Collections.Generic;
using UnityEngine;
public class filmadoraanim : MonoBehaviour {
private Animator filmadora;
public bool pegou = false;
void Start () {
filmadora = GetComponent<Animator> ();
}
void Update () {
if (Input.GetKeyDown(KeyCode.C)){
if (pegou)
filmadora.SetInteger("condicao", 0);
else
filmadora.SetInteger("condicao", 1);
pegou = !pegou;
}
}
}
BrazaTattoo- Membro
- PONTOS : 3260
REPUTAÇÃO : 24
Respeito as regras :
Re: [RESOLVIDO] Como ativar animação quando o objeto se move ?? sem rigidbody
Tópico resolvidoEste tópico está impedido de receber novos posts. Movido para "Tópicos resolvidos". |
Tópicos semelhantes
» [RESOLVIDO] Como Ativar Objeto Apenas na Frente Dele?
» [RESOLVIDO] script para ativar e desativar um objeto,animação,etc...
» [RESOLVIDO] Como ativar e desativar um objeto.
» Como fazer com que uma animaçao inicie toda vez quando o objeto colide???
» [Resolvido]Como faz pra ativar um "objeto" depois de um tempo
» [RESOLVIDO] script para ativar e desativar um objeto,animação,etc...
» [RESOLVIDO] Como ativar e desativar um objeto.
» Como fazer com que uma animaçao inicie toda vez quando o objeto colide???
» [Resolvido]Como faz pra ativar um "objeto" depois de um tempo
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos