質問編集履歴

2

タイトルの変更

2022/02/19 09:49

投稿

Hagiaki
Hagiaki

スコア6

test CHANGED
@@ -1 +1 @@
1
- RigidbodyやAddforceを使わずにジャンプや重力をつけたい
1
+ RigidbodyやAddforceの代わりにRaycastを使ってジャンプや重力をつけたい
test CHANGED
File without changes

1

誤字の修正・使用しておらずコメントアウトしていた部分の削除・コメントの追加

2022/02/19 09:47

投稿

Hagiaki
Hagiaki

スコア6

test CHANGED
File without changes
test CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  ### 前提・実現したいこと
4
4
 
5
- Unityでタイトルの通りRigidbodyやAddforceを使わずRaycastなどを用いた操作キャラクターの動きを作ています。
5
+ Unityでタイトルの通りRigidbodyやAddforceを使わず、代わりにRaycastなどを用いた操作キャラクターの動きをています。
6
- ジャンプ機能を実装中に以下の問題が発生しました。
6
+ スペースキーでジャンプする機能を実装中に以下の問題が発生しました。
7
7
 
8
8
  ### 発生している問題
9
9
 
@@ -30,12 +30,12 @@
30
30
  PlayerAnimator = GetComponent<Animator>();
31
31
  }
32
32
 
33
- // Update is called once per frame
34
33
  void Update()
35
34
  {
36
35
  Vector3 moveDirection = new Vector3(0, 0, 0);
37
36
  Vector3 jumpDirection = new Vector3(0, 0, 0);
38
37
 
38
+ //Raycast処理全般
39
39
  Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.8f, 0.0f);
40
40
  RaycastHit hitinfo;
41
41
  Ray ray = new Ray(rayPosition, Vector3.down);
@@ -43,10 +43,7 @@
43
43
  distance = hitinfo.distance;
44
44
  transform.position = hitinfo.point;//接地している間はYのみ。
45
45
  Debug.DrawRay(rayPosition, Vector3.down * distance, Color.red);
46
- //Vector3 forwardDirection = transform.forward;
47
46
 
48
- //isGrounded = Physics.Raycast(gameObject.transform.position + 0.1f * gameObject.transform.up, -gameObject.transform.up, 0.15f);
49
- //Debug.DrawRay(gameObject.transform.position + 0.1f * gameObject.transform.up, -0.15f * gameObject.transform.up, Color.blue);
50
47
 
51
48
  if (Input.GetKey(KeyCode.UpArrow))
52
49
  {
@@ -65,7 +62,7 @@
65
62
  moveDirection.x = -1;
66
63
  }
67
64
 
68
- if (Input.GetKey(KeyCode.Space))
65
+ if (Input.GetKeyDown(KeyCode.Space))
69
66
  {
70
67
  jumpDirection.y = 1;
71
68
  PlayerAnimator.SetBool("JUMP", true);
@@ -75,6 +72,7 @@
75
72
  PlayerAnimator.SetBool("JUMP", false);
76
73
  }
77
74
 
75
+    //Raycastが当たっていない(地面に足を付けていない)状態だと下に進み続けるようにしたい
78
76
  if (isGround == false)
79
77
  {
80
78
  jumpDirection.y -= 1 * Time.deltaTime;
@@ -83,9 +81,7 @@
83
81
  moveDirection.Normalize();//正規化
84
82
  jumpDirection.Normalize();
85
83
 
86
- //Vector3 rotateDirecton = transform.position - PlayerPos;
87
-
88
- if (moveDirection.magnitude > 0.01f)
84
+ if (moveDirection.magnitude > 0.01f)//方向切替と走るモーションの管理
89
85
  {
90
86
  transform.rotation = Quaternion.LookRotation(moveDirection);
91
87
  PlayerAnimator.SetBool("RUNNING", true);
@@ -107,7 +103,7 @@
107
103
 
108
104
  ### 試したこと
109
105
 
110
- 31行目のtransform.position = hitinfo.point;をコメントアウト
106
+ transform.position = hitinfo.point;をコメントアウト
111
107
  →落下してくれない
112
108
 
113
109
  アニメーション処理のPlayerAnimator.SetBool("JUMP", false);のすぐ上にjumpDirection.y = 1;と記述