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

質問編集履歴

4

改善

2018/07/03 03:01

投稿

GOTOken
GOTOken

スコア54

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  問題点
2
2
  ---
3
3
  以下のスクリプトを記述したとき、最後のInstantiateの部分の処理のみが通っており、Lvに応じたif文が機能していない。
4
+ deltaTimeの初期化ができない。
4
5
 
5
6
  実装したいこと
6
7
  ---
@@ -16,8 +17,8 @@
16
17
  時間を計測し、時間に応じた処理をしようとした。
17
18
  bool型の変数を用意し、それぞれの場合に合わせて変えれるようにしようとした。
18
19
  これらのことを試しましたが、Lv3まで処理が飛んでしまっているので、どのように分岐すれば段階別にすることができるのか案をご教授していただきたいです。
20
+ また、再度計測させるためにそれぞれの処理の最後にdeltaTimeを=0(初期化)するようにした。
19
21
 
20
-
21
22
  ```c#
22
23
  using System.Collections;
23
24
  using System.Collections.Generic;

3

改善

2018/07/03 03:00

投稿

GOTOken
GOTOken

スコア54

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,7 @@
15
15
 
16
16
  時間を計測し、時間に応じた処理をしようとした。
17
17
  bool型の変数を用意し、それぞれの場合に合わせて変えれるようにしようとした。
18
+ これらのことを試しましたが、Lv3まで処理が飛んでしまっているので、どのように分岐すれば段階別にすることができるのか案をご教授していただきたいです。
18
19
 
19
20
 
20
21
  ```c#

2

改善

2018/07/03 01:40

投稿

GOTOken
GOTOken

スコア54

title CHANGED
File without changes
body CHANGED
@@ -68,7 +68,7 @@
68
68
  Debug.Log("Lv.1");
69
69
  Lv1 = false;
70
70
  Lv2 = true;
71
- return;
71
+
72
72
  //泡弾 Lv.2
73
73
  if (delta > 4 && Lv2)
74
74
  {
@@ -78,7 +78,7 @@
78
78
  Lv2 = false;
79
79
  Lv3 = true;
80
80
  Debug.Log("Lv.2");
81
- return;
81
+
82
82
  //泡弾 Lv.3
83
83
  if (delta > 7 && Lv3)
84
84
 
@@ -88,7 +88,7 @@
88
88
  delta = 0;
89
89
  Debug.Log("Lv3");
90
90
  Lv3 = false;
91
- return;
91
+
92
92
  }
93
93
  }
94
94
 

1

改善

2018/07/03 01:36

投稿

GOTOken
GOTOken

スコア54

title CHANGED
File without changes
body CHANGED
@@ -18,22 +18,50 @@
18
18
 
19
19
 
20
20
  ```c#
21
+ using System.Collections;
22
+ using System.Collections.Generic;
23
+ using UnityEngine;
24
+
25
+ public class playerCont : MonoBehaviour {
26
+
21
- //レベル段階別判定用
27
+ public int PlayerHP;
28
+ public int PlayerBUlletGun;//Playerの撃てる弾数設定用
29
+ public float Playerspped = 3;
30
+ public float BulletCount;
31
+ public float bulletSpeed;
22
32
  public bool Lv1;
23
33
  public bool Lv2;
24
34
  public bool Lv3;
25
35
 
36
+
37
+ public Bullet BulletPrefab;//弾Prefab格納
38
+ public Transform target_to_Move;
39
+ public GameObject tarGet;
40
+ public AudioClip clip;
41
+
42
+ private Vector2 prevPos;
43
+
44
+ public Transform my_Trans;
45
+ private Rigidbody2D rb2d;
26
46
  private float delta;
47
+ private AudioSource audiosource;
27
48
 
49
+ // Use this for initialization
50
+ void Start () {
51
+ this.rb2d = GetComponent<Rigidbody2D>();
52
+ // this.anim = GetComponent<Animator>();
53
+ this.audiosource = GetComponent<AudioSource>();
28
54
 
55
+ }
56
+
57
+ // Update is called once per frame
29
58
  void Update () {
30
59
  if (Input.GetKey(KeyCode.Joystick1Button1))
31
60
  {
32
- delta+= Time.deltaTime ;
61
+ delta+= Time.deltaTime ;
33
-
34
62
  Lv1 = true;
35
63
  // 泡弾 Lv.1
36
- if (delta < 2 && Lv1)
64
+ if (delta > 2 && Lv1)
37
65
  {
38
66
  Instantiate(BulletPrefab, prevPos, my_Trans.rotation);
39
67
  delta = 0;
@@ -42,19 +70,20 @@
42
70
  Lv2 = true;
43
71
  return;
44
72
  //泡弾 Lv.2
45
- if (delta< 4 && Lv2)
73
+ if (delta > 4 && Lv2)
46
74
  {
47
75
  BulletPrefab.transform.localScale = new Vector3(3, 3, 3);
48
- Instantiate(BulletPrefab, prevPos, my_Trans.rotation);
76
+ Instantiate(BulletPrefab, prevPos, my_Trans.rotation);
49
77
  delta = 0;
50
78
  Lv2 = false;
51
79
  Lv3 = true;
52
80
  Debug.Log("Lv.2");
53
81
  return;
54
82
  //泡弾 Lv.3
55
- if (delta < 7 && Lv3)
83
+ if (delta > 7 && Lv3)
84
+
56
- {
85
+ {
57
- BulletPrefab.transform.localScale = new Vector3(6,6,6);
86
+ BulletPrefab.transform.localScale = new Vector3(6, 6, 6);
58
87
  Instantiate(BulletPrefab, prevPos, my_Trans.rotation);
59
88
  delta = 0;
60
89
  Debug.Log("Lv3");
@@ -62,7 +91,90 @@
62
91
  return;
63
92
  }
64
93
  }
94
+
65
95
  }
66
96
  }
97
+ //ボタンなしの連射機能
98
+ //delta += Time.deltaTime;
99
+ //if (delta > BulletCount)
100
+ //{
101
+ // delta = 0;
102
+ // Instantiate(BulletPrefab, prevPos, my_Trans.rotation);
103
+ // audiosource.PlayOneShot(clip);
104
+ // // Debug.Log("生成");
105
+ //}
67
106
 
107
+ // }
108
+ }
109
+ void setup()
110
+ {
111
+ prevPos = this.transform.position;
112
+ }
113
+ private void FixedUpdate()
114
+ {
115
+ PlayerMove();
116
+ }
117
+ void PlayerMove()
118
+ {
119
+ //移動処理
120
+ float dy = Input.GetAxis("Vertical") * Playerspped;
121
+ float dx = Input.GetAxis("Horizontal") * Playerspped;
122
+ rb2d.Sleep();
123
+
124
+ if ((dx > -0.2f && dx < 0.2f) && (dy < 0.2f && dy > -0.2f))
125
+ {
126
+
127
+ return;
128
+ }
129
+
130
+ rb2d.velocity = new Vector2(dx, dy);
131
+
132
+ //スティック傾き取得
133
+ float angle = Mathf.Atan2(-dx, dy);
134
+ float p_angle = (angle) / (Mathf.PI * 2) * 360;
135
+ this.transform.rotation = Quaternion.Euler(0, 0, p_angle);
136
+
137
+ if (dy != 0 || dx != 0)
138
+ {
139
+ var diff = (target_to_Move.position - transform.position).normalized;
140
+ transform.rotation = Quaternion.FromToRotation(Vector3.up, diff);
141
+
142
+ }
143
+
144
+
145
+ ////角度計算
146
+ var nowPos = this.transform.position;
147
+
148
+ float x = this.transform.position.x - prevPos.x;
149
+ float y = this.transform.position.y - prevPos.y;
150
+
151
+ Vector2 vec = new Vector2(x, y).normalized;
152
+
153
+
154
+ float rot = Mathf.Atan2(vec.y, vec.x) * 180 / Mathf.PI;
155
+ if (rot > 180) rot -= 360;
156
+ if (rot < -180) rot += 360;
157
+
158
+ prevPos = nowPos;
159
+
160
+ // Debug.Log("Angle = " + rot);
161
+ prevPos = this.transform.position;
162
+
163
+
164
+ // ShootNWay(,bulletSpeed,BulletCount)
165
+
166
+
167
+ }
168
+
169
+ private void OnTriggerEnter2D(Collider2D collision)
170
+ {   
171
+ //Playerのダメージ計算
172
+ if(collision.gameObject.name == "Enemy")
173
+ {
174
+ PlayerHP = PlayerHP - 1;
175
+ }
176
+ }
177
+ }
178
+
179
+
68
180
  ```