質問編集履歴

2

2022/01/27 14:29

投稿

_hello_world_
_hello_world_

スコア24

test CHANGED
File without changes
test CHANGED
@@ -1,39 +1,21 @@
1
- #地面の傾きに合わせてキャラクターを傾ける
1
+ ### 地面の傾きに合わせてキャラクターを傾ける
2
-
3
2
  地面と平行にキャラクターを傾けるために
4
-
5
3
  Quaternion.FromToRotationで傾けを行っています。
6
-
7
4
  しかし平面は問題ないですがX軸のみの回転でいいところが
8
-
9
5
  地面の角度に合わせ向きを変えているせいで方向転換がうまくいかずガタガタ震えてしまったり
10
-
11
6
  キャラクターが逆さまになってしまいます。
12
-
13
- #該当コード
7
+ ### 該当コード
14
-
15
8
  ```C#
16
-
17
- if(Physics.Raycast(transform.position, -transform.up, out RaycastHit hit, float.PositiveInfinity))
9
+ if (Physics.Raycast(transform.position, -transform.up, out RaycastHit hit, float.PositiveInfinity))
18
-
19
10
  {
20
-
11
+ Vector3 test = new Vector3(0, hit.normal.y, hit.normal.z);
21
- transform.rotation *= Quaternion.FromToRotation(transform.up, hit.normal);
12
+ transform.rotation *= Quaternion.FromToRotation(transform.up, test);
22
-
23
13
  }
24
-
25
14
  ```
26
-
27
- #参考記事
15
+ ### 参考記事
28
-
29
16
  [重力に逆らい、球面にそって垂直に歩かせてみる](https://indie-du.com/entry/2017/01/24/200000)
30
-
31
17
  [他のオブジェクトの表面に沿ってオブジェクトを移動させる](https://www.ame-name.com/archives/146)
32
-
33
- #最後に
18
+ ### 最後に
34
-
35
19
  原因がわかるかたいらっしゃいましたら
36
-
37
20
  教えていただきたいです。
38
-
39
21
  よろしくお願いいたします。

1

コード修正

2021/10/31 15:01

投稿

_hello_world_
_hello_world_

スコア24

test CHANGED
File without changes
test CHANGED
@@ -18,9 +18,7 @@
18
18
 
19
19
  {
20
20
 
21
- Vector3 test = new Vector3(0, hit.normal.y, hit.normal.z);
22
-
23
- transform.rotation *= Quaternion.FromToRotation(transform.up, test);
21
+ transform.rotation *= Quaternion.FromToRotation(transform.up, hit.normal);
24
22
 
25
23
  }
26
24