回答編集履歴

3

追記

2020/08/27 11:25

投稿

cc_KH
cc_KH

スコア108

test CHANGED
@@ -25,3 +25,117 @@
25
25
  MainCameraの表示領域とCanvasの領域が合っていないのではないでしょうか?
26
26
 
27
27
  [Unity 2D:Canvasをカメラの表示領域に合わせる](https://web-dev.hatenablog.com/entry/unity/2d/canvas-screen-space-camera)
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+ [ゲーム開始時の2フレームの対策案]
36
+
37
+ プレイヤーオブジェクト側にOnBecameVisible()の処理を追加してはどうでしょうか?
38
+
39
+ OnBecameVisibleはRenderer(SpriteRenderer)コンポーネントがアタッチされたオブジェクトが見えるようになったときに呼び出されます。
40
+
41
+ [Renderer.OnBecameVisible()](https://docs.unity3d.com/ja/current/ScriptReference/Renderer.OnBecameVisible.html)
42
+
43
+
44
+
45
+ ```C#
46
+
47
+ プレイヤーオブジェクト側の処理。
48
+
49
+ public class Hoge : MonoBehaviour
50
+
51
+ {
52
+
53
+ public bool isBecameVisible;
54
+
55
+
56
+
57
+ private void OnBecameVisible()
58
+
59
+ {
60
+
61
+ Debug.Log("OnBecameVisible");
62
+
63
+ isBecameVisible = true;
64
+
65
+ }
66
+
67
+ }
68
+
69
+ ```
70
+
71
+
72
+
73
+ ```C#
74
+
75
+ Cam_1の修正
76
+
77
+ public class Cam_1 : MonoBehaviour
78
+
79
+ {
80
+
81
+
82
+
83
+ public SpriteRenderer targetRenderer; // 判定したいオブジェクトのrendererへの参照
84
+
85
+ float x = 1;
86
+
87
+
88
+
89
+ public Hoge player; // <--- 追加 --->
90
+
91
+
92
+
93
+ void Update()
94
+
95
+ {
96
+
97
+ // <--- 追加 --->
98
+
99
+ if (!player.isBecameVisible)
100
+
101
+ return;
102
+
103
+ // <------------>
104
+
105
+
106
+
107
+ if (targetRenderer.isVisible)
108
+
109
+ {
110
+
111
+
112
+
113
+ Debug.Log("画面に表示されてるよ");
114
+
115
+ }
116
+
117
+ else
118
+
119
+ {
120
+
121
+
122
+
123
+ Invoke("CameraInvoke", 5f);
124
+
125
+ Debug.Log("画面から消えたよ");
126
+
127
+ }
128
+
129
+ }
130
+
131
+ public void CameraInvoke()
132
+
133
+ {
134
+
135
+ Camera.main.transform.position += new Vector3(-18f, 0, 0);
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```

2

修正内容の取違

2020/08/27 11:25

投稿

cc_KH
cc_KH

スコア108

test CHANGED
@@ -14,6 +14,14 @@
14
14
 
15
15
  --- 追記 ---
16
16
 
17
- Renderer.isVisibleはゲームビューだけではなくシーンビューに写っていてもTrueを返します。
17
+ ~~Renderer.isVisibleはゲームビューだけではなくシーンビューに写っていてもTrueを返します。
18
18
 
19
- シーンビューにplayerが写っていないか確認してください。
19
+ シーンビューにplayerが写っていないか確認してください。~~
20
+
21
+ 修正内容を取り違えていました。
22
+
23
+
24
+
25
+ MainCameraの表示領域とCanvasの領域が合っていないのではないでしょうか?
26
+
27
+ [Unity 2D:Canvasをカメラの表示領域に合わせる](https://web-dev.hatenablog.com/entry/unity/2d/canvas-screen-space-camera)

1

追記

2020/08/26 11:35

投稿

cc_KH
cc_KH

スコア108

test CHANGED
@@ -9,3 +9,11 @@
9
9
  Start内の処理でMainCameraのSpriteRendererをplayerに設定していますが、その処理は必要ですか?
10
10
 
11
11
  GetComponentの前後にDebug.Logを入れてplayerの変化をご自身で確認してください。
12
+
13
+
14
+
15
+ --- 追記 ---
16
+
17
+ Renderer.isVisibleはゲームビューだけではなくシーンビューに写っていてもTrueを返します。
18
+
19
+ シーンビューにplayerが写っていないか確認してください。