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

回答編集履歴

3

ソースに余計なところがあったので削除

2018/05/20 09:55

投稿

fiveHundred
fiveHundred

スコア10454

answer CHANGED
@@ -12,11 +12,6 @@
12
12
  // Spaceが押されたかどうか
13
13
  bool spaceKeyDown = false;
14
14
 
15
- void Start()
16
- {
17
- rigidbody = GetComponent<Rigidbody>();
18
- }
19
-
20
15
  void Update()
21
16
  {
22
17
  if (Input.GetKeyDown(KeyCode.Space))

2

100f→jumpに修正

2018/05/20 09:54

投稿

fiveHundred
fiveHundred

スコア10454

answer CHANGED
@@ -29,7 +29,7 @@
29
29
  {
30
30
  if (spaceKeyDown && count != 0)
31
31
  {
32
- rigidbody.AddForce(transform.up * 100f);
32
+ rigidbody.AddForce(transform.up * jump);
33
33
  count -= 1;
34
34
  }
35
35
 

1

判定を当たり判定に変更

2018/05/20 09:46

投稿

fiveHundred
fiveHundred

スコア10454

answer CHANGED
@@ -1,9 +1,10 @@
1
1
  ``rigidbody.AddForce()``が反映される前に、``if (rigidbody.velocity.y == 0) { ~ }``を行っているため、回数が減った直後に(同じフレーム中に)リセットされているからです。
2
2
 
3
- また、質問と直接関係ないですが、``AddForce(~);``のような物理関係の処理は基本的に``FixedUpdate()``内で行います。
3
+ また、質問と直接関係ないですが、``AddForce(~);``のような物理関係の処理は基本的に``FixedUpdate()``内で行います。
4
4
  この場合、``FixedUpdate()``内でInputクラスの処理を行えない点にも注意してください。
5
5
 
6
6
  これらを踏まえて、修正すると以下のようになります。
7
+ (※修正:判定を当たり判定に変更しました)
7
8
 
8
9
  ```C#
9
10
  int count = 1;
@@ -11,6 +12,11 @@
11
12
  // Spaceが押されたかどうか
12
13
  bool spaceKeyDown = false;
13
14
 
15
+ void Start()
16
+ {
17
+ rigidbody = GetComponent<Rigidbody>();
18
+ }
19
+
14
20
  void Update()
15
21
  {
16
22
  if (Input.GetKeyDown(KeyCode.Space))
@@ -23,17 +29,19 @@
23
29
  {
24
30
  if (spaceKeyDown && count != 0)
25
31
  {
26
- rigidbody.AddForce(transform.up * jump);
32
+ rigidbody.AddForce(transform.up * 100f);
27
33
  count -= 1;
28
34
  }
29
- // 押された直後は比較しないよう、elseを付ける
30
- else if (rigidbody.velocity.y == 0)
31
- {
32
- count = 1;
33
- }
34
35
 
35
36
  spaceKeyDown = false;
36
37
  }
38
+
39
+ // 何かにぶつかったときに実行される関数
40
+ void OnCollisionEnter(Collision collision)
41
+ {
42
+ // ここではそのままですが、必要に応じて「ぶつかったのが床であるとき」のような処理を入れてください
43
+ count = 1;
44
+ }
37
45
  ```
38
46
 
39
47
  ---