- Home /
How can i rotate 3D object with joystick in all directions?
Hello, i am developing mobile game. I have a scene in which i have a 3D object and a joystick that should rotate this object in all directions depending on joystick position. I have a working code for joystick :
public class Joystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler {
private Image bgImg;
private Image joystickImg;
public Vector3 InputDirection { set; get; }
private void Start()
{
bgImg = GetComponent<Image>();
joystickImg = transform.GetChild(0).GetComponent<Image>();
InputDirection = Vector3.zero;
}
public virtual void OnDrag(PointerEventData ped)
{
Vector2 pos = Vector2.zero;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle
(bgImg.rectTransform,
ped.position,
ped.pressEventCamera,
out pos))
{
pos.x = (pos.x / bgImg.rectTransform.sizeDelta.x);
pos.y = (pos.y / bgImg.rectTransform.sizeDelta.y);
float x = (bgImg.rectTransform.pivot.x == 1) ? pos.x * 2 + 1 : pos.x * 2 - 1;
float y = (bgImg.rectTransform.pivot.y == 1) ? pos.y * 2 + 1 : pos.y * 2 - 1;
InputDirection = new Vector3(x, 0, y);
InputDirection = (InputDirection.magnitude > 1) ? InputDirection.normalized : InputDirection;
joystickImg.rectTransform.anchoredPosition =
new Vector3(InputDirection.x * (bgImg.rectTransform.sizeDelta.x / 3),
InputDirection.z * (bgImg.rectTransform.sizeDelta.y / 3));
}
}
public virtual void OnPointerDown(PointerEventData ped)
{
OnDrag(ped);
}
public virtual void OnPointerUp(PointerEventData ped)
{
InputDirection = Vector3.zero;
joystickImg.rectTransform.anchoredPosition = Vector3.zero;
}
}
Now i can't figure out what to do in another script to achieve rotation on this 3D object other than creating reference to this joystick. I would be really glad if someone could suggest me how to deal with this problem.
Thank you for your help :)
Your answer
Follow this Question
Related Questions
Rigidbody rotation with virtual joystick, weird behaviour 0 Answers
Rotate a GameObject in the Vector3 direction? 1 Answer
why is my character rotation always 180° after joystick is released. 1 Answer
Rotation of player based on camera direction and joystick direction in 3D world 1 Answer
Joystick movement problems 0 Answers