質問するログイン新規登録

回答編集履歴

2

誤字の修正

2017/07/09 22:47

投稿

Bongo
Bongo

スコア10818

answer CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  [コメントを受けて追記]
17
17
 
18
- では逆にcameraparentの方を使わずにやるパターンではどうでしょうか。
18
+ では逆にcameraparentの方を使わずにやるパターンではどうでしょうか。
19
19
 
20
20
  ※ご質問者さんがカメラの親をあえて取得して操作していたのには何か理由があるのでしょうか?
21
21
  以下のパターンだとカメラの親のtransformには手を付けないことになりますが、その理由によっては都合が悪いかもしれません。

1

コメントを受けて別パターンのコードを追記

2017/07/09 22:46

投稿

Bongo
Bongo

スコア10818

answer CHANGED
@@ -11,4 +11,55 @@
11
11
  if (Input.GetKey(KeyCode.UpArrow)) cameraparent.transform.Rotate(-1.2f, 0, 0);
12
12
  if (Input.GetKey(KeyCode.DownArrow)) cameraparent.transform.Rotate(1.2f, 0, 0);
13
13
  ```
14
- ではどうでしょうか。
14
+ ではどうでしょうか。
15
+
16
+ [コメントを受けて追記]
17
+
18
+ では逆にcameraparentの方をを使わずにやるパターンではどうでしょうか。
19
+
20
+ ※ご質問者さんがカメラの親をあえて取得して操作していたのには何か理由があるのでしょうか?
21
+ 以下のパターンだとカメラの親のtransformには手を付けないことになりますが、その理由によっては都合が悪いかもしれません。
22
+ ```C#
23
+ public class CameraRotate : MonoBehaviour
24
+ {
25
+ // GameObject cameraparent; // cameraparentは使用しない
26
+ Quaternion defaultCameraRot;
27
+ float timer = 0;
28
+
29
+ // Use this for initialization
30
+ void Start()
31
+ {
32
+
33
+ //カメラの初期方向を記憶
34
+ // cameraparent = Camera.main.transform.parent.gameObject;
35
+ // defaultCameraRot = cameraparent.transform.localRotation;
36
+ defaultCameraRot = transform.localRotation; // cameraparentではなく自身の回転を保存
37
+ }
38
+
39
+ // Update is called once per frame
40
+ void Update()
41
+ {
42
+
43
+ if (Input.GetKey(KeyCode.UpArrow)) transform.Rotate(-1.2f, 0, 0);
44
+ if (Input.GetKey(KeyCode.DownArrow)) transform.Rotate(1.2f, 0, 0);
45
+
46
+ if (Input.GetKey(KeyCode.RightShift))
47
+ timer = 0.5f;
48
+
49
+ //スムーズにカメラを戻す
50
+ if (timer > 0)
51
+ {
52
+ /*
53
+ cameraparent.transform.localRotation = Quaternion.Slerp
54
+ (cameraparent.transform.localRotation,
55
+ defaultCameraRot, Time.deltaTime * 10);
56
+ */
57
+ // cameraparent.transformの代わりに自身のtransformを回転
58
+ transform.localRotation = Quaternion.Slerp(transform.localRotation, defaultCameraRot, Time.deltaTime * 10);
59
+
60
+ timer -= Time.deltaTime;
61
+ }
62
+ }
63
+
64
+ }
65
+ ```