

2点間を結ぶ3D放物線を描画しております。

[code]

    Vector3 _controlPoint = new Vector3( 0, 0, -50 );
    var control = (_trans1.position + _trans2.position) / 2 + _controlPoint;
    var totalPoints = _middlePoints + 2;
    List<Vector3> l_list = new List<Vector3>();
    l_list.Add( _trans1.position );
    for (int i = 1; i <= _middlePoints; i++)
    {
        var t = (float)i / (float)(totalPoints - 1);
        Vector3 _pos1 = Vector3.Lerp(_trans1.position, control, t);
        // Interpolate along line S1: S1 = end - control;
        Vector3 _pos2 = Vector3.Lerp(control, _trans2.position, t);
        // Interpolate along line S2: Q1 - Q0
        Vector3 _pos = Vector3.Lerp(Q0, Q1, t);
        l_list.Add( mpos);
    }
    l_list.Add( _trans2.position );
    
[/code]

中間地点「control」をセンターからズラそう値を変えているのですが、  
地面に対して90°の線ではなく、傾いた線になってしまいます。

[code]

    var control = (_trans1.position + _trans2.position) * 0.85f + _controlPoint;
    
[/code]

目指しているのは釣り竿のような線を想定しております。  
こちらコードでどこを修正すればよろしいでしょうか

よろしくお願い致します。


CC BY-SA 4.0
2020-10-22T10:50:25.477
71427
2020-10-22T13:21:15.140
29606
question
unity3d
2点間を結ぶ3D放物線の中間地点のZ軸のみ動かしたい


`control`の計算方法が間違っています。次のようにすれば正しい中間点が求まると思います。

[code]

    var control = Vector3.Lerp(_trans1.position, _trans2.position, 0.85f) + _controlPoint;
    
[/code]


CC BY-SA 4.0
2020-10-22T13:21:15.140
71431
2020-10-22T13:21:15.140
14817
71427
answer