質問編集履歴

2

コード編集

2020/11/26 04:05

投稿

nine_fish397
nine_fish397

スコア8

test CHANGED
File without changes
test CHANGED
@@ -22,8 +22,6 @@
22
22
 
23
23
  public Sprite[] SPR_LIST;//アニメーション用スプライトの保持
24
24
 
25
- public GameObject gameMgr;//ゲーム管理
26
-
27
25
  public GameObject sc;
28
26
 
29
27
 

1

コード編集

2020/11/26 04:05

投稿

nine_fish397
nine_fish397

スコア8

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,147 @@
6
6
 
7
7
  コード (プレイヤーのscript。衝突時にゲームオーバーになりスコアを止めたい)
8
8
 
9
+ public class PlayerControll : MonoBehaviour {
10
+
11
+ //スプライト番号
12
+
13
+ const int SPR_FALL = 0;
14
+
15
+ const int SPR_JUMP = 1;
16
+
17
+
18
+
19
+ [SerializeField]
20
+
21
+ float Jump=400;//ジャンプ力
22
+
23
+ public Sprite[] SPR_LIST;//アニメーション用スプライトの保持
24
+
25
+ public GameObject gameMgr;//ゲーム管理
26
+
27
+ public GameObject sc;
28
+
29
+
30
+
31
+ Rigidbody2D _rigidbody;//物理挙動
32
+
33
+ SpriteRenderer _renderer;//スプライト描画
34
+
35
+ Score _sc;//ゲーム管理スクリプト
36
+
37
+
38
+
39
+ // Start is called before the first frame update
40
+
41
+ void Start()
42
+
43
+ {
44
+
45
+ _rigidbody = GetComponent<Rigidbody2D>();//物理挙動のコンポーネント獲得
46
+
47
+ _renderer = GetComponent<SpriteRenderer>();//スプライト描画コンポーネント獲得
48
+
49
+
50
+
51
+ _sc=sc.GetComponent<Score>();//ゲーム管理スクリプトを取得
52
+
53
+ }
54
+
55
+
56
+
57
+ // Update is called once per frame
58
+
59
+ void Update()
60
+
61
+ {
62
+
63
+ if (Input.GetMouseButtonDown(0))
64
+
65
+ {
66
+
67
+ GetComponent<AudioSource>().Play();
68
+
69
+ _rigidbody.velocity = Vector2.zero;//落下速度を一度リセット
70
+
71
+ _rigidbody.AddForce(new Vector2(0, Jump));//上方向の力
72
+
73
+ }
74
+
75
+ }
76
+
77
+ //固定フレーム更新
78
+
79
+ private void FixedUpdate()
80
+
81
+ {
82
+
83
+ Vector3 position = transform.position;
84
+
85
+ //画面の外から出ないようにする
86
+
87
+ float y = transform.position.y;
88
+
89
+ float vx = _rigidbody.velocity.x;
90
+
91
+ if (y > GetTop())
92
+
93
+ {
94
+
95
+ _rigidbody.velocity = Vector2.zero;//一度速度をリセット
96
+
97
+ position.y = GetTop();
98
+
99
+ }
100
+
101
+ if (y < GetBottom())
102
+
103
+ {
104
+
105
+ //下に落ちたらオートジャンプ
106
+
107
+ _rigidbody.velocity = Vector2.zero;//落下速度を一度リセットする
108
+
109
+ _rigidbody.AddForce(new Vector2(0, Jump));
110
+
111
+ position.y = GetBottom();//押し戻す
112
+
113
+ }
114
+
115
+ //座標を反映する
116
+
117
+ transform.position = position;
118
+
119
+ }
120
+
121
+ //画面上を習得する
122
+
123
+ float GetTop()
124
+
125
+ {
126
+
127
+ Vector2 max = Camera.main.ViewportToWorldPoint(Vector2.one);
128
+
129
+ return max.y;
130
+
131
+ }
132
+
133
+ //画面下を習得
134
+
135
+ float GetBottom()
136
+
137
+ {
138
+
139
+ //座標獲得
140
+
141
+ Vector2 min = Camera.main.ViewportToWorldPoint(Vector2.zero);
142
+
143
+ return min.y;
144
+
145
+ }
146
+
147
+ //衝突判定
148
+
9
- private void OnTriggerEnter2D(Collider2D collision)
149
+ private void OnTriggerEnter2D(Collider2D collision)
10
150
 
11
151
  {
12
152
 
@@ -16,9 +156,13 @@
16
156
 
17
157
  //ゲームオーバーを通知
18
158
 
19
- gm.StartGameOver();
159
+ _sc.StartGameOver();
20
-
160
+
21
- }
161
+ }
162
+
163
+
164
+
165
+ }
22
166
 
23
167
  ```
24
168