質問編集履歴

1

PencaseScriptの内容変更。

2017/12/31 10:47

投稿

tokyo_emcount
tokyo_emcount

スコア7

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,15 @@
4
4
 
5
5
  Unityでシューティングゲーム作っています。
6
6
 
7
- そこでSpaceキーなどのキーを押している時間によって発射するオブジェクトの速さが変化するようにしたいです。また発射する速度の指標としてパワーゲージを作りましたが、上手く連動しませんでした
7
+ そこでSpaceキーなどのキーを押している時間によって発射するオブジェクトの速さが変化するようにしたいです。また発射する速度の指標としてパワーゲージを作りました。
8
+
9
+ 一応個別には動きましたが、連動はしませんでした。
10
+
11
+ 私としましてはBarScriptにあるとおり、ゲージの幅を読み取って、発射速度に反映されるようにしたいのですが、どうすれば連動できるでしょうか?出来れば詳細もお願いします。
12
+
13
+
14
+
15
+
8
16
 
9
17
 
10
18
 
@@ -14,9 +22,9 @@
14
22
 
15
23
  ```
16
24
 
25
+ SendMessage Jump has no receiver!
26
+
17
- Assets/Bar.cs(13,9): error CS0246: The type or namespace name `PencaseScript' could not be found. Are you missing an assembly reference?
27
+ UnityEngine.Component:SendMessage(String, Object)
18
-
19
-
20
28
 
21
29
  ```
22
30
 
@@ -24,218 +32,212 @@
24
32
 
25
33
  ###該当のソースコード
26
34
 
35
+
36
+
37
+ ```
38
+
39
+
40
+
41
+ using UnityEngine;
42
+
43
+
44
+
27
45
  using System.Collections;
28
46
 
47
+
48
+
29
- using System.Collections.Generic;
49
+ public class Pencase : MonoBehaviour {
50
+
51
+
52
+
53
+ void Start () {
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ }
62
+
63
+
64
+
65
+
66
+
67
+ void Update () {
68
+
69
+
70
+
71
+ if (Input.GetKeyUp(KeyCode.Space)) {
72
+
73
+ transform.position = new Vector3(transform.position.x+ 1f, 30f, 0f);
74
+
75
+ }
76
+
77
+
78
+
79
+ }
80
+
81
+
82
+
83
+ }
84
+
85
+
86
+
87
+ ```
88
+
89
+
90
+
91
+ #パワーゲージのスクリプト
92
+
93
+ ```
30
94
 
31
95
  using UnityEngine;
32
96
 
33
97
 
34
98
 
35
- public class Pencase : MonoBehaviour {
36
-
37
-
38
-
39
- public GameObject shellPrefab;
40
-
41
- public float shotSpeed;
42
-
43
-
44
-
45
-
46
-
47
- void Update(){
48
-
49
-
50
-
51
- // もしもSpaceキーを押しているならば(条件)
52
-
53
- if(Input.GetKeyDown(KeyCode.Space)){
54
-
55
-
56
-
57
- // 物体のプレハブを実体化(インスタンス化)する。
58
-
59
- GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity) as GameObject;
60
-
61
-
62
-
63
- // 物体に付いているRigidbodyコンポーネントにアクセスする。
64
-
65
- Rigidbody shellRb = shell.GetComponent<Rigidbody>();
66
-
67
-
68
-
69
- // forward(青軸=Z軸)の方向に力を加える。
70
-
71
- shellRb.AddForce(transform.forward * shotSpeed);
72
-
73
-
74
-
75
-
99
+ using UnityEngine.UI;
100
+
101
+
102
+
103
+ using System.Collections;
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+ public class BarScript : MonoBehaviour {
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ public PencaseScript PencaseScript;
120
+
121
+
122
+
123
+ RectTransform rt;
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ void Start () {
132
+
133
+
134
+
135
+ //bar1のRectTransformコンポーネントをキャッシュ
136
+
137
+
138
+
139
+ rt = GetComponent<RectTransform>();
140
+
141
+
142
+
143
+ }
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ void Update (){
152
+
153
+
154
+
155
+ //スペースキー入力中である時ゲージを増やす
156
+
157
+
158
+
159
+ if (Input.GetKeyDown (KeyCode.Space)) {
160
+
161
+
162
+
163
+ //sizeDeltaでゲージの大きさを制御
164
+
165
+
166
+
167
+ //左端から、毎フレーム4ずつ増やす
168
+
169
+
170
+
171
+ rt.sizeDelta = new Vector2 (rt.sizeDelta.x + 4.0f, 50.0f);
172
+
173
+
174
+
175
+ //ゲージの横幅が300を超えたら0に戻る
176
+
177
+
178
+
179
+ if (rt.sizeDelta.x >= 300) {
180
+
181
+
182
+
183
+ rt.sizeDelta = new Vector2 (0.0f, 50.0f);
184
+
185
+
186
+
187
+ }
76
188
 
77
189
 
78
190
 
79
191
  }
80
192
 
193
+
194
+
195
+ //クリックを放した時
196
+
197
+
198
+
199
+ if (Input.GetKeyUp(KeyCode.Space)) {
200
+
201
+
202
+
203
+ //GetShotForceメソッドへ、ゲージ横幅の3倍分の
204
+
205
+
206
+
207
+ //ShotForceを送る
208
+
209
+
210
+
211
+ PencaseScript.SendMessage("Shot", rt.sizeDelta.x * 2.5);
212
+
213
+
214
+
215
+ //発射したら発射ゲージを0に戻す。
216
+
217
+
218
+
219
+ rt.sizeDelta = new Vector2 (0.0f, 50.0f);
220
+
221
+
222
+
81
- }
223
+ }
224
+
225
+
226
+
227
+
228
+
229
+ }
230
+
231
+
82
232
 
83
233
  }
84
234
 
85
-
86
-
87
-
88
-
89
- #パワーゲージのスクリプト
90
-
91
-
92
-
93
- using UnityEngine;
94
-
95
-
96
-
97
- using UnityEngine.UI;
98
-
99
-
100
-
101
- using System.Collections;
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
- public class BarScript : MonoBehaviour {
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
- public PencaseScript PencaseScript;
118
-
119
-
120
-
121
- RectTransform rt;
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
- void Start () {
130
-
131
-
132
-
133
- //bar1のRectTransformコンポーネントをキャッシュ
134
-
135
-
136
-
137
- rt = GetComponent<RectTransform>();
138
-
139
-
140
-
141
- }
235
+ ```
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
- void Update (){
150
-
151
-
152
-
153
- //スペースキー入力中である時ゲージを増やす
154
-
155
-
156
-
157
- if (Input.GetKeyDown (KeyCode.Space)) {
158
-
159
-
160
-
161
- //sizeDeltaでゲージの大きさを制御
162
-
163
-
164
-
165
- //左端から、毎フレーム4ずつ増やす
166
-
167
-
168
-
169
- rt.sizeDelta = new Vector2 (rt.sizeDelta.x + 4.0f, 50.0f);
170
-
171
-
172
-
173
- //ゲージの横幅が300を超えたら0に戻る
174
-
175
-
176
-
177
- if (rt.sizeDelta.x >= 300) {
178
-
179
-
180
-
181
- rt.sizeDelta = new Vector2 (0.0f, 50.0f);
182
-
183
-
184
-
185
- }
186
-
187
-
188
-
189
- }
190
-
191
-
192
-
193
- //クリックを放した時
194
-
195
-
196
-
197
- if (Input.GetKeyUp(KeyCode.Space)) {
198
-
199
-
200
-
201
- //GetShotForceメソッドへ、ゲージ横幅の3倍分の
202
-
203
-
204
-
205
- //ShotForceを送る
206
-
207
-
208
-
209
- PencaseScript.SendMessage("Shot", rt.sizeDelta.x * 2.5);
210
-
211
-
212
-
213
- //発射したら発射ゲージを0に戻す。
214
-
215
-
216
-
217
- rt.sizeDelta = new Vector2 (0.0f, 50.0f);
218
-
219
-
220
-
221
- }
222
-
223
-
224
-
225
-
226
-
227
- }
228
-
229
-
230
-
231
- }
232
236
 
233
237
  ###試したこと
234
238
 
239
+ script内容の変更
240
+
235
- 課題に対してアプロチしたことを記載してくだ
241
+ 弾の作成・発射から元あるオブジェクトをキ入力で移動せるものへ
236
-
237
-
238
242
 
239
243
  ###補足情報(言語/FW/ツール等のバージョンなど)
240
-
241
- より詳細な情報