Question by
ncankeles · May 07, 2017 at 08:56 PM ·
joystickjoysticksthirdpersoncontroller
Integrating Virtual Joystick to the standart ThirdPersonController.
I'm new to the unity, I'm trying to develop basic game for android platform. But my joystick only hovers my thirdpersoncharacter throug x and z axises. How can I use my joystick as an input to the thirdpersoncontroller, so it can run instead of hovering?
My Joystick code is this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class joystick : MonoBehaviour , IPointerDownHandler, IPointerUpHandler, IDragHandler
{
Image joyArka;
Image joyStick;
Vector3 giriliV;
public GameObject Winston1;
private void Start()
{
joyArka = gameObject.transform.GetComponent<Image>();
joyStick = gameObject.transform.GetChild(0).GetComponent<Image>();
}
public void OnDrag (PointerEventData ped)
{
Vector2 position;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(joyArka.rectTransform, ped.position, ped.enterEventCamera, out position))
{
position.x = (position.x / joyArka.rectTransform.sizeDelta.x);
position.y = (position.y / joyArka.rectTransform.sizeDelta.y);
giriliV = new Vector3(position.x * 2,0,position.y*2);
giriliV = (giriliV.magnitude > 1.0f) ? giriliV.normalized : giriliV;
joyStick.rectTransform.anchoredPosition = new Vector3(giriliV.x*joyStick.rectTransform.sizeDelta.x/2, giriliV.z* joyStick.rectTransform.sizeDelta.y/2);
}
}
public void OnPointerUp(PointerEventData ped)
{
giriliV = Vector3.zero;
joyStick.rectTransform.anchoredPosition = Vector3.zero;
}
public void OnPointerDown(PointerEventData ped )
{
OnDrag(ped);
}
private void Update()
{
Winston1.transform.position += giriliV * Time.deltaTime * 5;
}
I want to use this code's output positions as an Input To the this code;
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.ThirdPerson
{
[RequireComponent(typeof (ThirdPersonCharacter))]
public class ThirdPersonUserControl : MonoBehaviour
{
private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object
private Transform m_Cam; // A reference to the main camera in the scenes transform
private Vector3 m_CamForward; // The current forward direction of the camera
private Vector3 m_Move;
private bool m_Jump; // the world-relative desired move direction, calculated from the camForward and user input.
private void Start()
{
// get the transform of the main camera
if (Camera.main != null)
{
m_Cam = Camera.main.transform;
}
else
{
Debug.LogWarning(
"Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.", gameObject);
// we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
}
// get the third person character ( this should never be null due to require component )
m_Character = GetComponent<ThirdPersonCharacter>();
}
private void Update()
{
if (!m_Jump)
{
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
}
}
// Fixed update is called in sync with physics
private void FixedUpdate()
{
// read inputs
float h = CrossPlatformInputManager.GetAxis("Horizontal");
float v = CrossPlatformInputManager.GetAxis("Vertical");
bool crouch = Input.GetKey(KeyCode.C);
// calculate move direction to pass to character
if (m_Cam != null)
{
// calculate camera relative direction to move:
m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized;
m_Move = v*m_CamForward + h*m_Cam.right;
}
else
{
// we use world-relative directions in the case of no main camera
m_Move = v*Vector3.forward + h*Vector3.right;
}
#if !MOBILE_INPUT
// walk speed multiplier
if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f;
#endif
// pass all parameters to the character control script
m_Character.Move(m_Move, crouch, m_Jump);
m_Jump = false;
}
}
}
Thank you for your help.
Comment
Your answer
Follow this Question
Related Questions
how to map joystick for mobile game? 0 Answers
How do Unity decide which is joystick 1, 2, 3, etc 1 Answer
nested two joysticks 0 Answers
How to get maximum value of a direction working with Joysticks? 1 Answer
Twin stick control 2D 1 Answer