Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Player_Moving_Controller : MonoBehaviour
- {
- private GameObject BigCircle; //Большой кружок дмойстика
- private GameObject CenterCircle; //Маленький кружок дмойстика
- private GameObject SideOfMoving; //та херня, которая светится в сторону ходьбы
- private bool touchStart = false;
- private Vector2 StartPoint;
- private Vector2 EndPoint;
- private Vector3 StartPosOfSideOfMoving;
- private float StartAngleOfSideOfPosition;
- private void Start()
- {
- BigCircle = GameObject.Find("Big_Circle_");
- CenterCircle = GameObject.Find("Center_Circle");
- SideOfMoving = GameObject.Find("Side_Of_Moving");
- StartPosOfSideOfMoving = SideOfMoving.transform.position;
- StartAngleOfSideOfPosition = SideOfMoving.transform.rotation.z;
- }
- void Update()
- {
- CalculatingMoveAndroid();
- }
- private void FixedUpdate()
- {
- PlayerMoving();
- }
- private void CalculatingMoveAndroid()
- {
- if(Input.GetMouseButtonDown(0))
- {
- StartPoint = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.transform.position.z)); //calc point from worldSpace
- BigCircle.transform.position = StartPoint;
- CenterCircle.transform.position = StartPoint;
- }
- if(Input.GetMouseButton(0))
- {
- touchStart = true;
- EndPoint = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.transform.position.z)); //calc point from worldSpace
- }
- else
- {
- touchStart = false;
- }
- }
- private void PlayerMoving()
- {
- if (touchStart)
- {
- Vector3 offset = EndPoint - StartPoint;
- Vector2 direction = Vector2.ClampMagnitude(offset, 0.25f);
- CenterCircle.transform.position = new Vector2(StartPoint.x + direction.x, StartPoint.y + direction.y);
- direction.Normalize();
- if (offset.magnitude <= 0.05f)
- {
- SideOfMoving.transform.position = new Vector2(BigCircle.transform.position.x, BigCircle.transform.position.y + 0.32f);
- }
- else
- {
- SideOfMoving.transform.position = new Vector2(StartPoint.x + direction.x, StartPoint.y + direction.y);
- if (SideOfMoving.transform.hasChanged)
- {
- SideOfMoving.transform.Rotate(0.0f, 0.0f, Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg);
- SideOfMoving.transform.hasChanged = false;
- }
- }
- }
- else
- {
- SideOfMoving.transform.SetPositionAndRotation(StartPosOfSideOfMoving,Quaternion.AngleAxis(StartAngleOfSideOfPosition, BigCircle.transform.position));
- BigCircle.transform.localPosition = new Vector2(0, -175);
- CenterCircle.transform.localPosition = new Vector2(0, 0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement