質問編集履歴
2
タイトルの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
RigidbodyやAddforceを使
|
1
|
+
RigidbodyやAddforceの代わりにRaycastを使ってジャンプや重力をつけたい
|
test
CHANGED
File without changes
|
1
誤字の修正・使用しておらずコメントアウトしていた部分の削除・コメントの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
### 前提・実現したいこと
|
4
4
|
|
5
|
-
Unityでタイトルの通りRigidbodyやAddforceを使わ
|
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
|
-
|
106
|
+
transform.position = hitinfo.point;をコメントアウト
|
111
107
|
→落下してくれない
|
112
108
|
|
113
109
|
アニメーション処理のPlayerAnimator.SetBool("JUMP", false);のすぐ上にjumpDirection.y = 1;と記述
|