Converter Controle telcado para Celular
2 participantes
Página 1 de 1
Converter Controle telcado para Celular
Ola Amigo ja estou com tudo pronto, ja tenho ate o joystick na cenado que fiz olhando o tutorial do Marcos daqui do Forum, porem estou com dificuldade, na verdade eu não sei mesmo, mudar a programação que esta para meu Player para ele andar para o Joystick move o Player.
Aqui esta o Scipt do Player e abaixo do Joystick
aqui do MSJoystick
Aqui esta o Scipt do Player e abaixo do Joystick
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Animator _animator;
private CharacterController _characterController;
public float Speed = 5.0f;
public float RotationSpeed = 240.0f;
private float Gravity = 20.0f;
private Vector3 _moveDir = Vector3.zero;
// Use this for initialization
void Start()
{
_animator = GetComponent<Animator>();
_characterController = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
// Get Input for axis
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
// Calculate the forward vector
Vector3 camForward_Dir = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized;
Vector3 move = v * camForward_Dir + h * Camera.main.transform.right;
if (move.magnitude > 1f) move.Normalize();
// Calculate the rotation for the player
move = transform.InverseTransformDirection(move);
// Get Euler angles
float turnAmount = Mathf.Atan2(move.x, move.z);
transform.Rotate(0, turnAmount * RotationSpeed * Time.deltaTime, 0);
if (_characterController.isGrounded)
{
_animator.SetBool("run", move.magnitude> 0);
_moveDir = transform.forward * move.magnitude;
_moveDir *= Speed;
}
_moveDir.y -= Gravity * Time.deltaTime;
_characterController.Move(_moveDir * Time.deltaTime);
}
}
aqui do MSJoystick
- Código:
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class MSJoystickController : MonoBehaviour
{
public MSJoystick joystick;
public static Vector2 joystickInput;//é possível acessar através de MSJoystickController.joystickInput
void Update()
{
if (joystick)
{
joystickInput = new Vector2(joystick.joystickX, joystick.joystickY);
}
}
}
- 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;
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.5f;
}
}
#if UNITY_EDITOR
protected override void OnValidate()
{
base.OnValidate();
UpdateJoystickGraphicMS();
}
#endif
}
Johnatasdasilva- Membro
- PONTOS : 2020
REPUTAÇÃO : 0
Idade : 34
Áreas de atuação : Empreendedorismo.
Respeito as regras :
Re: Converter Controle telcado para Celular
Tente isto... modifiquei apenas 2 linhas.
Talvez tenha que deixar algum eixo negativo, ou algo do tipo
Talvez tenha que deixar algum eixo negativo, ou algo do tipo
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Animator _animator;
private CharacterController _characterController;
public float Speed = 5.0f;
public float RotationSpeed = 240.0f;
private float Gravity = 20.0f;
private Vector3 _moveDir = Vector3.zero;
// Use this for initialization
void Start()
{
_animator = GetComponent<Animator>();
_characterController = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
// Get Input for axis
float h = MSJoystickController.joystickInput.x;
float v = MSJoystickController.joystickInput.y;
// Calculate the forward vector
Vector3 camForward_Dir = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized;
Vector3 move = v * camForward_Dir + h * Camera.main.transform.right;
if (move.magnitude > 1f) move.Normalize();
// Calculate the rotation for the player
move = transform.InverseTransformDirection(move);
// Get Euler angles
float turnAmount = Mathf.Atan2(move.x, move.z);
transform.Rotate(0, turnAmount * RotationSpeed * Time.deltaTime, 0);
if (_characterController.isGrounded)
{
_animator.SetBool("run", move.magnitude> 0);
_moveDir = transform.forward * move.magnitude;
_moveDir *= Speed;
}
_moveDir.y -= Gravity * Time.deltaTime;
_characterController.Move(_moveDir * Time.deltaTime);
}
}
Tópicos semelhantes
» Site para Converter Java script para Csharp
» Converter um script de otimização 3D para 2D
» Converter String para UTF-8
» Converter string para float?
» Ajuda para converter variaveis
» Converter um script de otimização 3D para 2D
» Converter String para UTF-8
» Converter string para float?
» Ajuda para converter variaveis
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos