

実現したいことは、ジェットコースターの垂直ループのようなコースをキャラクターに走らせることです。

**参考動画(GIF)**

[code]

    <img src="https://img.gifmagazine.net/gifmagazine/images/1386312/original.gif" width="320" />
[/code]

**試したこと**

壁の法線ベクトルを取得してその逆方向に重力をかけてあげればできるかなと思いましたが、キャラクターが落ちてしまいます。

アプローチの仕方が悪いのでしょうか？解決策を探しています。よろしくお願いいたします。

[code]

        Ray ray = new Ray(playerObj.transform.position, Vector3.down);
    
        int layerMask = 1 << LayerMask.NameToLayer("Wall");
    
            RaycastHit raycastHit;
            if (Physics.Raycast(ray, out raycastHit, Mathf.Infinity, layerMask))
            {
    
                playerObj.transform.eulerAngles =
                    Quaternion.FromToRotation(raycastHit.transform.up, raycastHit.normal).eulerAngles;
                GravityVector = playerObj.transform.rotation * Vector3.down;
                        
                PlyaerRB = GameObject.Find("Player").GetComponent<Rigidbody>();
                PlyaerRB.useGravity = false;
            }
            
    void update(){
            PlyaerRB.AddForce(GravityVector * 9.81f, ForceMode.Acceleration);
    }
    
[/code]


CC BY-SA 4.0
2020-06-27T11:47:53.673
68057
2020-06-27T21:14:42.333
2020-06-27T21:14:42.333
3068
40807
question
unity3d game-development
キャラクターに壁を走らせたい