Animação de acordo com a velocidade e posição do Joystick
3 participantes
Página 1 de 1
Animação de acordo com a velocidade e posição do Joystick
Fala galera tudo bem estou desenvolvendo um game e está indo tudo bem, porém estou com uma dúvida.
Meu joystick ,que usei o tutorial do Marcos Schultz, só faz uma animação e pra deixar mais legal no meu game eu queria que conforme o analogico do joystick fosse mais pro centro reproduzia a animação de andando e se eu afastar ela reproduz dele correndo. Alguem pode me ajudar ?
Meu joystick ,que usei o tutorial do Marcos Schultz, só faz uma animação e pra deixar mais legal no meu game eu queria que conforme o analogico do joystick fosse mais pro centro reproduzia a animação de andando e se eu afastar ela reproduz dele correndo. Alguem pode me ajudar ?
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections;
#if UNITY_EDITOR
using UnityEditor;
#endif
[RequireComponent(typeof(RectTransform))]
public class MSJoystick : UIBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler
{
[SerializeField]
RectTransform _joystickGraphic;
Vector2 _axis;
bool _isDragging;
[HideInInspector]
public float joystickY;
[HideInInspector]
public float joystickX;
private bool walk;
RectTransform _rectTransform;
public RectTransform rectTransform
{
get
{
if (!_rectTransform)
{
_rectTransform = transform as RectTransform;
}
return _rectTransform;
}
}
public void OnBeginDrag(PointerEventData eventData)
{
if (!IsActive())
{
return;
}
EventSystem.current.SetSelectedGameObject(gameObject, eventData);
Vector2 newAxis = transform.InverseTransformPoint(eventData.position);
newAxis.x /= rectTransform.sizeDelta.x * 0.5f;
newAxis.y /= rectTransform.sizeDelta.y * 0.5f;
SetAxisMS(newAxis);
_isDragging = true;
}
public void OnEndDrag(PointerEventData eventData)
{
_isDragging = false;
}
public void OnDrag(PointerEventData eventData)
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out _axis);
_axis.x /= rectTransform.sizeDelta.x * 0.5f;
_axis.y /= rectTransform.sizeDelta.y * 0.5f;
SetAxisMS(_axis);
}
void OnDeselect()
{
_isDragging = false;
}
void LateUpdate()
{
if (!_isDragging)
{
if (_axis != Vector2.zero)
{
Vector2 newAxis = _axis - (_axis * Time.deltaTime * 25.0f);
if (newAxis.sqrMagnitude <= 0.1f)
{
newAxis = Vector2.zero;
}
SetAxisMS(newAxis);
}
}
}
public void SetAxisMS(Vector2 axis)
{
_axis = Vector2.ClampMagnitude(axis, 1);
UpdateJoystickGraphicMS();
joystickY = _axis.y;
joystickX = _axis.x;
}
void UpdateJoystickGraphicMS()
{
if (_joystickGraphic)
{
_joystickGraphic.localPosition = _axis * Mathf.Max(rectTransform.sizeDelta.x, rectTransform.sizeDelta.y) * 0.2f;
{
walk = true;
}
}
}
#if UNITY_EDITOR
protected override void OnValidate() {
base.OnValidate();
UpdateJoystickGraphicMS();
}
#endif
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimacaoAndroid : MonoBehaviour
{
public bool cliqueBotao1;
public bool cliqueBotao2;
public bool cliqueBotao3;
public bool cliqueBotao4;
public bool cliqueBotaoDefesa;
public bool cliqueBotaoPulo;
private Animator animador;
public int Idle = 0;
public int Walk = 1;
public int Run = 2;
public int Pulo = 3;
public int Defesa = 4;
public int Attack1;
public int Attack2;
public int Attack3;
public int Attack4;
void Start()
{
animador = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
float horizontal = MSJoystickController.joystickInput.x;
float vertical = MSJoystickController.joystickInput.y;
float horizontalRaw = MSJoystickController.joystickInput.x;
float verticalRaw = MSJoystickController.joystickInput.y;
//Andando
animador.SetInteger("animacao", Idle);
if (MSJoystickController.joystickInput.x != 0)
{
animador.SetInteger("animacao", Walk);
}
//Ataque
else
{
if (cliqueBotao1 == true)
{
animador.SetInteger("animacao",Attack1);
cliqueBotao1 = false;
}
if (cliqueBotao2 == true)
{
animador.SetInteger("animacao",Attack2);
cliqueBotao2 = false;
}
if (cliqueBotao3 == true)
{
animador.SetInteger("animacao",Attack3);
cliqueBotao3 = false;
}
if (cliqueBotao4 == true)
{
animador.SetInteger("animacao",Attack4);
cliqueBotao4 = false;
}
if (cliqueBotaoPulo == true)
{
animador.SetInteger("animacao",Pulo);
}
cliqueBotaoPulo = false;
if (cliqueBotaoDefesa == true)
{
animador.SetInteger("animacao",Defesa);
}
cliqueBotaoDefesa = false;
}
}
public void botãoattack1(bool active)
{
cliqueBotao1 = true;
}
public void botãoattack2(bool active)
{
cliqueBotao2 = true;
}
public void botãoattack3(bool active)
{
cliqueBotao3 = true;
}
public void botãoattack4(bool active)
{
cliqueBotao4 = true;
}
public void botãoDefesa(bool active)
{
cliqueBotaoDefesa = true;
}
public void botãoPulo(bool active)
{
cliqueBotaoPulo = true;
}
}
teos626- Membro
- PONTOS : 1930
REPUTAÇÃO : 0
Respeito as regras :
Re: Animação de acordo com a velocidade e posição do Joystick
use magnitude para isso ,tem um video tutorial meu sobre isso.
no video eu uso o Vector3.Magnute para pegar um valor do analogico e usalo na
animação de andar do personagem.
no video eu uso o Vector3.Magnute para pegar um valor do analogico e usalo na
animação de andar do personagem.
hendrick22- MembroAvançado
- PONTOS : 2692
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Re: Animação de acordo com a velocidade e posição do Joystick
cara, da pra fazer de varias formas, segue o tutorial do amigo ai de cima, e recomendo que crie uma função para rodar suas ações, tem muito if no codigo, pode acabar pesando para um dispositivo android.
alefe c oliveira- Membro
- PONTOS : 1785
REPUTAÇÃO : 8
Respeito as regras :
Tópicos semelhantes
» Como ajustar o colisor de acordo com a posição da animação?
» Como fazer o som funcionar de acordo com a velocidade do objeto
» Sprite rotacionar de acordo com a posição do mouse
» A Arma mudar de posição de acordo coma movimentação
» Como Dar Play Em Uma Animaçao No Joystick mobile do Unity
» Como fazer o som funcionar de acordo com a velocidade do objeto
» Sprite rotacionar de acordo com a posição do mouse
» A Arma mudar de posição de acordo coma movimentação
» Como Dar Play Em Uma Animaçao No Joystick mobile do Unity
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos