質問編集履歴

1

ご質問頂いた部分のソースコードを公開しました

2017/06/09 03:11

投稿

akikawa
akikawa

スコア13

test CHANGED
File without changes
test CHANGED
@@ -37,3 +37,211 @@
37
37
  使用言語…C#
38
38
 
39
39
  バージョン…unity5.5.0f3
40
+
41
+
42
+
43
+ ###加筆情報
44
+
45
+ ご質問を頂いたので今回の質問に関連する移動物体(プレイヤー、敵の弾)の移動処理のコードを掲載させて頂きます
46
+
47
+ プレイヤー移動処理部分
48
+
49
+ ```C#
50
+
51
+ //タッチ環境か確認
52
+
53
+ if (Input.touchSupported) {
54
+
55
+ //水平移動
56
+
57
+ if (Input.touchCount > 0) {
58
+
59
+ Touch touch = Input.GetTouch (0);
60
+
61
+ foreach (Touch t in Input.touches) {
62
+
63
+
64
+
65
+ switch(t.phase)
66
+
67
+ {
68
+
69
+ //タッチ瞬間の処理
70
+
71
+ //Prefab(弾)をプレイヤー中心のちょい上に生成
72
+
73
+ case TouchPhase.Began:
74
+
75
+ intervalTime += Time.deltaTime;
76
+
77
+ Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.75f, transform.position.z), Quaternion.identity);
78
+
79
+ break;
80
+
81
+
82
+
83
+ //タッチ移動中、固定中の処理
84
+
85
+ //指の移動量に比例したx-z水平移動
86
+
87
+ //Prefab(弾)をプレイヤー中心のちょい上に生成
88
+
89
+ case TouchPhase.Moved:
90
+
91
+ case TouchPhase.Stationary:
92
+
93
+ float x = touch.deltaPosition.x;
94
+
95
+ float z = touch.deltaPosition.y;
96
+
97
+ transform.Translate(x * Vector3.right * Time.deltaTime * xspeed , Space.World);
98
+
99
+ transform.Translate(z * Vector3.forward * Time.deltaTime * zspeed , Space.World );
100
+
101
+
102
+
103
+ intervalTime += Time.deltaTime;
104
+
105
+ if (intervalTime >= 0.1f) {
106
+
107
+ intervalTime = 0.0f;
108
+
109
+ Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.75f, transform.position.z), Quaternion.identity);
110
+
111
+ }
112
+
113
+ break;
114
+
115
+
116
+
117
+ case TouchPhase.Ended:
118
+
119
+ case TouchPhase.Canceled:
120
+
121
+ break;
122
+
123
+ }
124
+
125
+ }
126
+
127
+ }
128
+
129
+ //タッチ環境でない場合
130
+
131
+ if (!Input.touchSupported) {
132
+
133
+ //水平値垂直値に比例したx-z水平移動
134
+
135
+ float x = Input.GetAxis("Horizontal");
136
+
137
+ float z = Input.GetAxis("Vertical");
138
+
139
+ if(Input.GetButton("Horizontal")){
140
+
141
+ transform.Translate(4 * x * Vector3.right * Time.deltaTime * xspeed , Space.World);
142
+
143
+ }
144
+
145
+ if(Input.GetButton("Vertical")){
146
+
147
+ transform.Translate(4 * z * Vector3.forward * Time.deltaTime * zspeed , Space.World );
148
+
149
+ }
150
+
151
+
152
+
153
+ //Prefab(弾)をプレイヤー中心のちょい上に生成
154
+
155
+ intervalTime += Time.deltaTime;
156
+
157
+ if (Input.GetKey("z")) {
158
+
159
+ if (intervalTime >= 0.1f) {
160
+
161
+ intervalTime = 0.0f;
162
+
163
+ Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.75f, transform.position.z), Quaternion.identity);
164
+
165
+ }
166
+
167
+ }
168
+
169
+ }
170
+
171
+ }
172
+
173
+ ```
174
+
175
+ 敵の弾(ザコ)移動処理部分
176
+
177
+ ```C#
178
+
179
+ void Start () {
180
+
181
+ //Playerタグがついてるオブジェクトに正面を向ける
182
+
183
+ target = GameObject.FindGameObjectWithTag("Player");
184
+
185
+ transform.LookAt(target.transform.position);
186
+
187
+ this.transform.rotation = Quaternion.Euler(x, transform.eulerAngles.y , z);
188
+
189
+ //?秒後に消える
190
+
191
+ Destroy(this.gameObject, 4);
192
+
193
+ }
194
+
195
+
196
+
197
+ void Update () {
198
+
199
+
200
+
201
+ //ローカル軸座標zをbulletSpeedで移動
202
+
203
+ transform.Translate( 0, 0, bulletSpeed * Time.deltaTime, Space.Self);
204
+
205
+ }
206
+
207
+ ```
208
+
209
+ 敵の弾(ボス)移動処理部分
210
+
211
+ ```C#
212
+
213
+ void Start () {
214
+
215
+ angle = 0;
216
+
217
+ bulletSpeed = 0;
218
+
219
+ //射出角度y=0,90,180,270に飛ばしx-z平面の四方へ向かせる
220
+
221
+ this.transform.rotation = Quaternion.Euler( x, y, z);
222
+
223
+ //?秒後に消える
224
+
225
+ Destroy(this.gameObject, 8);
226
+
227
+ }
228
+
229
+
230
+
231
+ void Update () {
232
+
233
+ bulletSpeed += 0.08f;
234
+
235
+ angle += 3.0f;
236
+
237
+
238
+
239
+ //x-z平面を円形が広がるような移動
240
+
241
+ transform.Translate( bulletSpeed * Mathf.Cos(angle * (Mathf.PI / 180)) * Time.deltaTime, 0,
242
+
243
+ bulletSpeed * Mathf.Sin(angle * (Mathf.PI / 180)) * Time.deltaTime, Space.Self);
244
+
245
+ }
246
+
247
+ ```