回答編集履歴

1

訂正(コードを示しているためコメントではなく回答を修正した)

2020/07/14 03:19

投稿

bboydaisuke
bboydaisuke

スコア5308

test CHANGED
@@ -1,3 +1,77 @@
1
+ RotateAround は obsolete だそうだけど、代わりに使うように指定されている Transform.Rotate で簡単に RotateAround と同じことができそうにないためそのまま RotateAround でやってみました。
2
+
3
+
4
+
5
+ ```csharp
6
+
7
+ using UnityEngine;
8
+
9
+
10
+
11
+ public class Rotation : MonoBehaviour
12
+
13
+ {
14
+
15
+ [SerializeField] Transform m_pivot;
16
+
17
+ [SerializeField] float m_rotateAngle = 1f;
18
+
19
+ [SerializeField] float m_targetAngle = 90f;
20
+
21
+ float m_currentAngle = 0;
22
+
23
+ int m_spinDirection = 1;
24
+
25
+
26
+
27
+ void Update()
28
+
29
+ {
30
+
31
+ Turn();
32
+
33
+ }
34
+
35
+
36
+
37
+ void Turn()
38
+
39
+ {
40
+
41
+ if (m_spinDirection * m_targetAngle > m_spinDirection * m_currentAngle)
42
+
43
+ {
44
+
45
+ m_currentAngle += m_spinDirection * m_rotateAngle;
46
+
47
+ transform.RotateAround(m_pivot.position, Vector3.back, m_spinDirection * m_rotateAngle);
48
+
49
+ }
50
+
51
+ else
52
+
53
+ {
54
+
55
+ m_spinDirection *= -1;
56
+
57
+ m_targetAngle *= -1;
58
+
59
+ }
60
+
61
+ }
62
+
63
+ }
64
+
65
+
66
+
67
+ ```
68
+
69
+
70
+
71
+ (※)以下のコードは最初に示したものですが、回転の中心が自分自身であるため、質問の主旨(中心は別オブジェクト)とは違うものでした。
72
+
73
+
74
+
1
75
  Unity本来の機能であるアニメーションで簡単に済ませたいけど、説明が大変なのでその次に楽そうな[DoTween](https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676)を使ったやり方のコードを貼っておきます。
2
76
 
3
77