回答編集履歴

3

修正

2020/01/16 08:23

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  private Rigidbody2D rb = null;//アニメとRBの変数宣言
76
76
 
77
- private string ochaTag = "Player";//★お茶タグを宣言
77
+ private string ochaTag = "Ocha";//★お茶タグを宣言
78
78
 
79
79
  private bool isKasoku = false;//★加速boolを宣言、通常は加速してないよ(お茶を取ってないよ)
80
80
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  {
116
116
 
117
- //anim.SetBool("run", true);//アニメon
117
+ anim.SetBool("run", true);//アニメon
118
118
 
119
119
  ySpeed = -Speed;//走る
120
120
 
@@ -124,7 +124,7 @@
124
124
 
125
125
  {
126
126
 
127
- //anim.SetBool("run", false);//アニメoff
127
+ anim.SetBool("run", false);//アニメoff
128
128
 
129
129
  ySpeed = 0.0f;//走らない
130
130
 

2

ミス修正

2020/01/16 08:22

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -196,8 +196,6 @@
196
196
 
197
197
  {
198
198
 
199
- Debug.Log("HIT");
200
-
201
199
  StartCoroutine(Kasoku());
202
200
 
203
201
  Destroy(collision.gameObject);//お茶が消えるよ

1

ミス修正

2020/01/16 01:29

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -1,3 +1,13 @@
1
+ 【修正2020/01/16】スクリプトを修正しました、変更点は移動の定義を個別に分け、加速度や加速時間をインスペクターから変更できるように追加しておきました。
2
+
3
+ 個人的な感想ですが、加速時間5秒は体感的に長かったので3秒ぐらいでいいかもしれません。
4
+
5
+
6
+
7
+ -----
8
+
9
+
10
+
1
11
  やるとしたらアイテム取得時に加速度フラグを4秒間Trueにして4秒たったらFalseにすればいいと思いますが、その切り替えをFixedUpdateの中に書いているのはよくありません。
2
12
 
3
13
  何故かというと、これは条件を満たしている時に常に適応されるので、加速度フラグがFalseの時、毎フレーム「rb.velocity = new Vector2(xSpeed, ySpeed);」「rb.velocity = new Vector2(xSpeed, ySpeed);」「rb.velocity = new Vector2(xSpeed, ySpeed);」...と繰り返されていることになります。
@@ -46,17 +56,25 @@
46
56
 
47
57
  {
48
58
 
49
- public float speed;//インスペクタで速度をいじくる宣言
59
+ public float Speed;//インスペクタで速度をいじくる宣言
60
+
61
+ public float KasokuSpeed = 1;//インスペクターでお好みの加速値を決めてください、0にすると移動しなくなるので1以上の値にしてください。
62
+
63
+ public int KasouTime = 1;//インスペクターでお好みの倍速にする時間を決めてください、0にすると加速しなくなるので1以上の値にしてください。
50
64
 
51
65
  private float ySpeed = 0.0f;//y軸移動速度の初期値
52
66
 
53
67
  private float xSpeed = 0.0f;//x軸移動速度の初期値
54
68
 
69
+ private float verticalKey;
70
+
71
+ private float horizontalKey;
72
+
55
73
  private Animator anim = null;
56
74
 
57
75
  private Rigidbody2D rb = null;//アニメとRBの変数宣言
58
76
 
59
- private string ochaTag = "Ocha";//★お茶タグを宣言
77
+ private string ochaTag = "Player";//★お茶タグを宣言
60
78
 
61
79
  private bool isKasoku = false;//★加速boolを宣言、通常は加速してないよ(お茶を取ってないよ)
62
80
 
@@ -78,19 +96,27 @@
78
96
 
79
97
  {
80
98
 
81
- float verticalKey = Input.GetAxis("Vertical");//上下キー宣言
99
+ verticalKey = Input.GetAxis("Vertical");//上下キー宣言
82
-
100
+
83
- float horizontalKey = Input.GetAxis("Horizontal");//左右キー宣言
101
+ horizontalKey = Input.GetAxis("Horizontal");//左右キー宣言
102
+
84
-
103
+ ChangeSpeed();
104
+
85
-
105
+ }
106
+
107
+
108
+
109
+ void ChangeSpeed()
110
+
111
+ {
86
112
 
87
113
  if(verticalKey < 0)//下キーが押されたら(上に行く必要がないゲームなので下キーのみ指定しています)
88
114
 
89
115
  {
90
116
 
91
- anim.SetBool("run", true);//アニメon
117
+ //anim.SetBool("run", true);//アニメon
92
-
118
+
93
- ySpeed = -speed;//走る
119
+ ySpeed = -Speed;//走る
94
120
 
95
121
  }
96
122
 
@@ -98,7 +124,7 @@
98
124
 
99
125
  {
100
126
 
101
- anim.SetBool("run", false);//アニメoff
127
+ //anim.SetBool("run", false);//アニメoff
102
128
 
103
129
  ySpeed = 0.0f;//走らない
104
130
 
@@ -110,7 +136,7 @@
110
136
 
111
137
  {
112
138
 
113
- xSpeed = speed;//右に行く
139
+ xSpeed = Speed;//右に行く
114
140
 
115
141
  }
116
142
 
@@ -118,25 +144,23 @@
118
144
 
119
145
  {
120
146
 
121
- xSpeed = -speed;//左に行く
147
+ xSpeed = -Speed;//左に行く
148
+
122
-
149
+ }else if(horizontalKey == 0)
150
+
151
+ {
152
+
153
+ xSpeed = 0f;
154
+
123
- }
155
+ }
124
-
125
- rb.velocity = new Vector2(xSpeed, ySpeed);
156
+
126
-
127
- }
157
+
128
-
129
-
130
-
131
- void ChangeSpeed()
132
-
133
- {
134
158
 
135
159
  if(isKasoku==true)//★加速フラグがtrueの場合の挙動
136
160
 
137
161
  {
138
162
 
139
- rb.velocity = new Vector2(xSpeed,ySpeed*4);//★y軸移動速度が4倍になる(今後通常時の走行速度の違う他キャラも増やすので、この方が汎用性があります)
163
+ rb.velocity = new Vector2(xSpeed,ySpeed * KasokuSpeed);//★y軸移動速度が4倍になる(今後通常時の走行速度の違う他キャラも増やすので、この方が汎用性があります)
140
164
 
141
165
  }
142
166
 
@@ -158,23 +182,21 @@
158
182
 
159
183
  isKasoku = true;//★加速フラグがtrueになるよ
160
184
 
161
- ChangeSpeed();
162
-
163
- yield return new WaitForSeconds(5);
185
+ yield return new WaitForSeconds(KasouTime);
164
186
 
165
187
  isKasoku = false;
166
188
 
167
- ChangeSpeed();
168
-
169
189
  }
170
190
 
171
191
  private void OnCollisionEnter2D(Collision2D collision)//★(お茶との)衝突判定
172
192
 
173
193
  {
174
194
 
175
- if(collision.collider.tag == ochaTag)//★お茶タグとぶつかったら
195
+ if(collision.gameObject.tag == ochaTag)//★お茶タグとぶつかったら
176
-
196
+
177
- {
197
+ {
198
+
199
+ Debug.Log("HIT");
178
200
 
179
201
  StartCoroutine(Kasoku());
180
202