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

回答編集履歴

3

追記

2020/08/27 11:25

投稿

cc_KH
cc_KH

スコア108

answer CHANGED
@@ -11,4 +11,61 @@
11
11
  修正内容を取り違えていました。
12
12
 
13
13
  MainCameraの表示領域とCanvasの領域が合っていないのではないでしょうか?
14
- [Unity 2D:Canvasをカメラの表示領域に合わせる](https://web-dev.hatenablog.com/entry/unity/2d/canvas-screen-space-camera)
14
+ [Unity 2D:Canvasをカメラの表示領域に合わせる](https://web-dev.hatenablog.com/entry/unity/2d/canvas-screen-space-camera)
15
+
16
+
17
+
18
+ [ゲーム開始時の2フレームの対策案]
19
+ プレイヤーオブジェクト側にOnBecameVisible()の処理を追加してはどうでしょうか?
20
+ OnBecameVisibleはRenderer(SpriteRenderer)コンポーネントがアタッチされたオブジェクトが見えるようになったときに呼び出されます。
21
+ [Renderer.OnBecameVisible()](https://docs.unity3d.com/ja/current/ScriptReference/Renderer.OnBecameVisible.html)
22
+
23
+ ```C#
24
+ プレイヤーオブジェクト側の処理。
25
+ public class Hoge : MonoBehaviour
26
+ {
27
+ public bool isBecameVisible;
28
+
29
+ private void OnBecameVisible()
30
+ {
31
+ Debug.Log("OnBecameVisible");
32
+ isBecameVisible = true;
33
+ }
34
+ }
35
+ ```
36
+
37
+ ```C#
38
+ Cam_1の修正
39
+ public class Cam_1 : MonoBehaviour
40
+ {
41
+
42
+ public SpriteRenderer targetRenderer; // 判定したいオブジェクトのrendererへの参照
43
+ float x = 1;
44
+
45
+ public Hoge player; // <--- 追加 --->
46
+
47
+ void Update()
48
+ {
49
+ // <--- 追加 --->
50
+ if (!player.isBecameVisible)
51
+ return;
52
+ // <------------>
53
+
54
+ if (targetRenderer.isVisible)
55
+ {
56
+
57
+ Debug.Log("画面に表示されてるよ");
58
+ }
59
+ else
60
+ {
61
+
62
+ Invoke("CameraInvoke", 5f);
63
+ Debug.Log("画面から消えたよ");
64
+ }
65
+ }
66
+ public void CameraInvoke()
67
+ {
68
+ Camera.main.transform.position += new Vector3(-18f, 0, 0);
69
+ }
70
+ }
71
+ ```

2

修正内容の取違

2020/08/27 11:25

投稿

cc_KH
cc_KH

スコア108

answer CHANGED
@@ -6,5 +6,9 @@
6
6
  GetComponentの前後にDebug.Logを入れてplayerの変化をご自身で確認してください。
7
7
 
8
8
  --- 追記 ---
9
- Renderer.isVisibleはゲームビューだけではなくシーンビューに写っていてもTrueを返します。
9
+ ~~Renderer.isVisibleはゲームビューだけではなくシーンビューに写っていてもTrueを返します。
10
- シーンビューにplayerが写っていないか確認してください。
10
+ シーンビューにplayerが写っていないか確認してください。~~
11
+ 修正内容を取り違えていました。
12
+
13
+ MainCameraの表示領域とCanvasの領域が合っていないのではないでしょうか?
14
+ [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

answer CHANGED
@@ -3,4 +3,8 @@
3
3
  プレイヤーオブジェクトにアタッチされているべきコンポーネントではないですか?
4
4
 
5
5
  Start内の処理でMainCameraのSpriteRendererをplayerに設定していますが、その処理は必要ですか?
6
- GetComponentの前後にDebug.Logを入れてplayerの変化をご自身で確認してください。
6
+ GetComponentの前後にDebug.Logを入れてplayerの変化をご自身で確認してください。
7
+
8
+ --- 追記 ---
9
+ Renderer.isVisibleはゲームビューだけではなくシーンビューに写っていてもTrueを返します。
10
+ シーンビューにplayerが写っていないか確認してください。