回答編集履歴
1
自己解決①は削除しました。
answer
CHANGED
@@ -1,86 +1,1 @@
|
|
1
|
-
### 自己解決しました!
|
2
|
-
|
3
|
-
解決についてもうまく書けないのですがご容赦くださいませ。
|
4
|
-
とりあえず、ゲーム画面の動画を貼っておきます。
|
5
|
-
キャラがお茶に当たってから加速しているのがおわかり頂けると思います。
|
6
|
-
(とあるマンガの非営利二次創作で、拙い絵でお恥ずかしいのですがスルーしてください)
|
7
|
-
https://streamable.com/98yro
|
8
|
-
|
9
|
-
×ダメだった時:Collider2DのIsTriggerを使っていました。
|
10
|
-
|
1
|
+
上記の通りです。投稿時は「加速できない」が問題でそれを自己解決しましたが、別の問題が生じたので未解決に戻し、この欄も削除しました(上記に統合しました)。
|
11
|
-
|
12
|
-
以下、キャラについてるスクリプトをまるまんま載せます。★が今回の問題に関係ある部分です。
|
13
|
-
|
14
|
-
```C#
|
15
|
-
|
16
|
-
using System.Collections;
|
17
|
-
using System.Collections.Generic;
|
18
|
-
using UnityEngine;
|
19
|
-
|
20
|
-
public class player : MonoBehaviour
|
21
|
-
{
|
22
|
-
public float speed;//インスペクタで速度をいじくる宣言
|
23
|
-
|
24
|
-
private Animator anim = null;
|
25
|
-
private Rigidbody2D rb = null;//アニメとRBの変数宣言
|
26
|
-
|
27
|
-
private string ochaTag = "Ocha";//★お茶タグを宣言
|
28
|
-
|
29
|
-
void Start()
|
30
|
-
{
|
31
|
-
anim = GetComponent<Animator>();
|
32
|
-
rb = GetComponent<Rigidbody2D>();//インスタンスを取得命令
|
33
|
-
}
|
34
|
-
|
35
|
-
// Update is called once per frame
|
36
|
-
private bool isKasoku = false;//★加速boolを宣言、通常は加速してないよ(お茶を取ってないよ)
|
37
|
-
void FixedUpdate()
|
38
|
-
{
|
39
|
-
float verticalKey = Input.GetAxis("Vertical");//上下キー宣言
|
40
|
-
float horizontalKey = Input.GetAxis("Horizontal");//左右キー宣言
|
41
|
-
float ySpeed = 0.0f;//y軸移動速度の初期値
|
42
|
-
float xSpeed = 0.0f;//x軸移動速度の初期値
|
43
|
-
if(verticalKey<0)//下キーが押されたら(上に行く必要がないゲームなので下キーのみ指定しています)
|
44
|
-
{
|
45
|
-
anim.SetBool("run", true);//アニメon
|
46
|
-
ySpeed = -speed;//走る
|
47
|
-
}
|
48
|
-
else
|
49
|
-
{
|
50
|
-
anim.SetBool("run", false);//アニメoff
|
51
|
-
ySpeed = 0.0f;//走らない
|
52
|
-
}
|
53
|
-
|
54
|
-
if(horizontalKey>0)//右キーが押されたら
|
55
|
-
{
|
56
|
-
xSpeed = speed;//右に行く
|
57
|
-
}
|
58
|
-
else if(horizontalKey<0)//左キーが押されたら
|
59
|
-
{
|
60
|
-
xSpeed = -speed;//左に行く
|
61
|
-
}
|
62
|
-
rb.velocity = new Vector2(xSpeed, ySpeed);//上記の記述をこの式に代入して動いているそうですがよくわかってません。
|
63
|
-
|
64
|
-
if(isKasoku==true)//★加速フラグがtrueの場合の挙動
|
65
|
-
{
|
66
|
-
rb.velocity = new Vector2(xSpeed,ySpeed*4);//★y軸移動速度が4倍になる(今後通常時の走行速度の違う他キャラも増やすので、この方が汎用性があります)
|
67
|
-
}
|
68
|
-
else if(isKasoku==false)//★加速フラグがfalse、つまり通常時
|
69
|
-
{
|
70
|
-
rb.velocity = new Vector2(xSpeed, ySpeed);//★通常時と同じ速度を記述
|
71
|
-
}
|
72
|
-
}
|
73
|
-
private void OnCollisionEnter2D(Collision2D collision)//★(お茶との)衝突判定
|
74
|
-
{
|
75
|
-
if(collision.collider.tag==ochaTag)//★お茶タグとぶつかったら
|
76
|
-
{
|
77
|
-
isKasoku = true;//★加速フラグがtrueになるよ
|
78
|
-
Debug.Log("お茶を取ったぞ");
|
79
|
-
}
|
80
|
-
}
|
81
|
-
}
|
82
|
-
//アイテムによる加速までできた。
|
83
|
-
|
84
|
-
```
|
85
|
-
|
86
|
-
まだ、お茶がぶつかった後も消えないという問題があるので、それも解決できたら追記致します。
|