2017-09-09 22 views
0

私がやりたいことは自由な図面なので、マウスを動かすと曲線でも連続した/連続した線が描かれます。しかし地形上のいくつかの場所では、それは描画されていないし、高い土地/丘のいくつかの場所では、常に描画されていません。私がマウスをゆっくりと動かしても。何故地面にマウスで線を描くと、何も描画されないのはなぜですか?

LineRendererコンポーネントとスクリプトがカメラに添付されています。メインカメラではなく新しいカメラ。

私はまた、使用する前に試してみました:

if (Physics.Raycast(ray, out hit, 1000)) 

しかし、同じ問題が。

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class DrawLinesWithMouse : MonoBehaviour 
{ 
    private List<Vector3> pointsList; 

    // Use this for initialization 
    void Start() 
    { 
     pointsList = new List<Vector3>(); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     RaycastHit hit; 
     //if (Physics.Raycast(ray, out hit, 1000)) 
     if (Physics.Raycast(GetComponent<Camera>().ScreenPointToRay(Input.mousePosition),out hit)) 
     { 
      Vector3 hitpoint = hit.point; 
      pointsList.Add(hitpoint); 

      if (pointsList.Count > 1) 
       DrawLine(pointsList[pointsList.Count - 2], pointsList[pointsList.Count - 1], Color.red, 0.2f); 
     } 
    } 

    void DrawLine(Vector3 start, Vector3 end, Color color, float duration = 0.2f) 
    { 
     GameObject myLine = new GameObject(); 
     myLine.transform.position = start; 
     myLine.AddComponent<LineRenderer>(); 
     LineRenderer lr = myLine.GetComponent<LineRenderer>(); 
     lr.startColor = color; 
     lr.startWidth = 3f; 
     lr.endWidth = 3f; 
     lr.SetPosition(0, start); 
     lr.SetPosition(1, end); 
     //GameObject.Destroy(myLine, duration); 
    } 
} 

Line

答えて

0

物理学に関連するコードは、一般的にFixedUpdate代わりに更新内側こと話すべきです。

FixedUpdateではなくUpdate内でレイキャスティングした場合、カーソルを移動せずにターゲットを見逃すことがありました。

コードをFixedUpdateに移動してみます。

+0

今試しましたが、修正しませんでした。 –

+0

同じ問題がフラットプレーンで発生しますか? プレーン3Dオブジェクトを作成してみてください。 EDIT:誤って入力します.... "ラインレンダラーコンポーネントは、3D空間内の2つ以上の点の配列を取り、それぞれの間に直線を描きます。" https://docs.unity3d.com/Manual/class-LineRenderer.html おそらく地形の高さは途中ですか? – Doh09

+0

私は同じことを面で試しました。マウスを右に動かすか、そのまま左に動かすと、直線になっていることに気付きました。しかし、私は少しマウスを下に動かすか、それはスペース/距離を作っている。私の推測では、キューブのインスタンス化のようなものです。例えば、マウスの動きに応じて曲線を描く/回転させる方法はわかりません。キューブをインスタンス化して同じことをしたとき、私は同じ問題を抱えていました。マウスの動きでストレートキューブをインスタンス化するのは問題ありませんが、マウスを動かすとキューブ間のスペースや距離は同じになりました。 –

関連する問題