CubeHandler.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //#define ENABLE_LOG
  2. /*
  3. * Copyright (c) 2014 - 2022 t_saki@serenegiant.com
  4. */
  5. using System;
  6. using UnityEngine;
  7. using UnityEngine.EventSystems;
  8. public class CubeHandler : MonoBehaviour,
  9. IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerClickHandler
  10. {
  11. /**
  12. * このスクリプトで操作するGameObject
  13. * 未割り当ての場合はこのスクリプトがセットされているGameObjectを使う
  14. */
  15. public GameObject TargetObject;
  16. private Transform taregtTransform;
  17. private Vector3 force = new Vector3();
  18. private const float FACTOR = 1.0f;
  19. private const float DECAY_RATE = 0.90f;
  20. // Start is called before the first frame update
  21. void Start()
  22. {
  23. if (TargetObject == null)
  24. { // TargetObjectが割り当てられていないときは
  25. // このスクリプトがセットされているゲームオブジェクトを使う
  26. TargetObject = gameObject;
  27. }
  28. taregtTransform = TargetObject.transform;
  29. }
  30. // // Update is called once per frame
  31. // void Update()
  32. // {
  33. //
  34. // }
  35. void FixedUpdate()
  36. {
  37. // 回転させる
  38. taregtTransform.Rotate(force * Time.deltaTime, Space.World);
  39. // 減衰させる
  40. force *= DECAY_RATE;
  41. }
  42. public void OnBeginDrag(PointerEventData eventData)
  43. {
  44. }
  45. public void OnDrag(PointerEventData eventData)
  46. {
  47. // 移動量に応じて角度計算
  48. float xAngle = eventData.delta.y * FACTOR;
  49. float yAngle = -eventData.delta.x * FACTOR;
  50. force += new Vector3(xAngle, yAngle, 0.0f);
  51. }
  52. public void OnEndDrag(PointerEventData eventData)
  53. {
  54. }
  55. public void OnPointerClick(PointerEventData eventData)
  56. {
  57. #if (!NDEBUG && DEBUG && ENABLE_LOG)
  58. Console.WriteLine("OnClick:");
  59. #endif
  60. }
  61. }