回答編集履歴

1

自己解決①は削除しました。

2020/01/12 07:43

投稿

Kageyama_23457
Kageyama_23457

スコア21

test CHANGED
@@ -1,171 +1 @@
1
- ### 自己解決しました!
2
-
3
-
4
-
5
- 解決についてもうまく書けないのですがご容赦くださいませ。
6
-
7
- とりあえず、ゲーム画面の動画を貼っておきます。
8
-
9
- キャラがお茶に当たってから加速しているのがおわかり頂けると思います。
10
-
11
- (とあるマンガの非営利二次創作で、拙い絵でお恥ずかしいのですがスルーしてください)
12
-
13
- https://streamable.com/98yro
14
-
15
-
16
-
17
- ×ダメだった時:Collider2DのIsTriggerを使っていました。
18
-
19
- ◯成功:IsTriggerをやめ、敵キャラにぶつかったとき挙動を参考に書き、「加速パネルを踏んだ」ではなく「加速アイテム取っ」という挙動にしました。
1
+ 上記通りです。投稿時は「加速できないが問題それ自己解決しましが、別の問題が生じたので未解決、この欄も削除しました(上記に統合しました)
20
-
21
-
22
-
23
- 以下、キャラについてるスクリプトをまるまんま載せます。★が今回の問題に関係ある部分です。
24
-
25
-
26
-
27
- ```C#
28
-
29
-
30
-
31
- using System.Collections;
32
-
33
- using System.Collections.Generic;
34
-
35
- using UnityEngine;
36
-
37
-
38
-
39
- public class player : MonoBehaviour
40
-
41
- {
42
-
43
- public float speed;//インスペクタで速度をいじくる宣言
44
-
45
-
46
-
47
- private Animator anim = null;
48
-
49
- private Rigidbody2D rb = null;//アニメとRBの変数宣言
50
-
51
-
52
-
53
- private string ochaTag = "Ocha";//★お茶タグを宣言
54
-
55
-
56
-
57
- void Start()
58
-
59
- {
60
-
61
- anim = GetComponent<Animator>();
62
-
63
- rb = GetComponent<Rigidbody2D>();//インスタンスを取得命令
64
-
65
- }
66
-
67
-
68
-
69
- // Update is called once per frame
70
-
71
- private bool isKasoku = false;//★加速boolを宣言、通常は加速してないよ(お茶を取ってないよ)
72
-
73
- void FixedUpdate()
74
-
75
- {
76
-
77
- float verticalKey = Input.GetAxis("Vertical");//上下キー宣言
78
-
79
- float horizontalKey = Input.GetAxis("Horizontal");//左右キー宣言
80
-
81
- float ySpeed = 0.0f;//y軸移動速度の初期値
82
-
83
- float xSpeed = 0.0f;//x軸移動速度の初期値
84
-
85
- if(verticalKey<0)//下キーが押されたら(上に行く必要がないゲームなので下キーのみ指定しています)
86
-
87
- {
88
-
89
- anim.SetBool("run", true);//アニメon
90
-
91
- ySpeed = -speed;//走る
92
-
93
- }
94
-
95
- else
96
-
97
- {
98
-
99
- anim.SetBool("run", false);//アニメoff
100
-
101
- ySpeed = 0.0f;//走らない
102
-
103
- }
104
-
105
-
106
-
107
- if(horizontalKey>0)//右キーが押されたら
108
-
109
- {
110
-
111
- xSpeed = speed;//右に行く
112
-
113
- }
114
-
115
- else if(horizontalKey<0)//左キーが押されたら
116
-
117
- {
118
-
119
- xSpeed = -speed;//左に行く
120
-
121
- }
122
-
123
- rb.velocity = new Vector2(xSpeed, ySpeed);//上記の記述をこの式に代入して動いているそうですがよくわかってません。
124
-
125
-
126
-
127
- if(isKasoku==true)//★加速フラグがtrueの場合の挙動
128
-
129
- {
130
-
131
- rb.velocity = new Vector2(xSpeed,ySpeed*4);//★y軸移動速度が4倍になる(今後通常時の走行速度の違う他キャラも増やすので、この方が汎用性があります)
132
-
133
- }
134
-
135
- else if(isKasoku==false)//★加速フラグがfalse、つまり通常時
136
-
137
- {
138
-
139
- rb.velocity = new Vector2(xSpeed, ySpeed);//★通常時と同じ速度を記述
140
-
141
- }
142
-
143
- }
144
-
145
- private void OnCollisionEnter2D(Collision2D collision)//★(お茶との)衝突判定
146
-
147
- {
148
-
149
- if(collision.collider.tag==ochaTag)//★お茶タグとぶつかったら
150
-
151
- {
152
-
153
- isKasoku = true;//★加速フラグがtrueになるよ
154
-
155
- Debug.Log("お茶を取ったぞ");
156
-
157
- }
158
-
159
- }
160
-
161
- }
162
-
163
- //アイテムによる加速までできた。
164
-
165
-
166
-
167
- ```
168
-
169
-
170
-
171
- まだ、お茶がぶつかった後も消えないという問題があるので、それも解決できたら追記致します。