Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class RadialDragger : MonoBehaviour {
- public GameObject Dragger;
- public Transform Planet;
- public float Distance;
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void Update () {
- Vector2 MouseInputPos = Input.mousePosition;
- Ray NewRay = Camera.main.ScreenPointToRay(MouseInputPos);
- RaycastHit NewHit = new RaycastHit();
- Planet.transform.collider.Raycast(NewRay,out NewHit,100.0f);
- Vector3 Direction = Planet.transform.position - GetWorldPos(MouseInputPos);
- Debug.DrawRay(Dragger.transform.position, Direction);
- Vector3 targetPosition = GetWorldPos(MouseInputPos) - Planet.position;
- float Ratio = Distance / targetPosition.magnitude;
- targetPosition.Scale( new Vector3(Ratio, Ratio, Ratio));
- Dragger.transform.position = targetPosition + Planet.position;
- }
- Vector3 GetWorldPos( Vector2 screenPos )
- {
- Camera mainCamera = Camera.main;
- return mainCamera.ScreenToWorldPoint(new Vector3(screenPos.x, screenPos.y, Mathf.Abs(Planet.position.z - mainCamera.transform.position.z)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement