Unityの視覚オブジェクトをTransformプロパティで回転できます。 1つの例外はLineRenderer
です。 transformプロパティを使用して移動または回転することはできません。Transformプロパティを持つLineRendererの移動と回転
LineRenderer
はので、私managed変換positionプロパティで、それを可動にするためにSetPosition
またはSetPositions
機能を移動させたが、私はそれがあまりにも回転させることはできません。
以下は、移動可能にするコードです。
public Vector3 beginPos = new Vector3(-1.0f, -1.0f, 0);
public Vector3 endPos = new Vector3(1.0f, 1.0f, 0);
Vector3 beginPosOffset;
Vector3 endPosOffset;
LineRenderer diagLine;
void Start()
{
diagLine = gameObject.AddComponent<LineRenderer>();
diagLine.material = new Material(Shader.Find("Sprites/Default"));
diagLine.startColor = diagLine.endColor = Color.green;
diagLine.startWidth = diagLine.endWidth = 0.15f;
diagLine.SetPosition(0, beginPos);
diagLine.SetPosition(1, endPos);
//Get offset
beginPosOffset = transform.position - diagLine.GetPosition(0);
endPosOffset = transform.position - diagLine.GetPosition(1);
}
void Update()
{
//Calculate new postion with offset
Vector3 newBeginPos = transform.position + beginPosOffset;
Vector3 newEndPos = transform.position + endPosOffset;
//Apply new position with offset
diagLine.SetPosition(0, newBeginPos);
diagLine.SetPosition(1, newEndPos);
}
は私が回転することができるようにするために使用され、同じメソッドを使用しようとしましたが、私はLineRenderer
ための回転変数にアクセスする方法がないので、オフセット取得の最初の段階で立ち往生していますが、そこです1つは位置GetPosition
にアクセスするためです。
どのようにしてLineRenderer
ローテーションを得ることができますか?LineRenderer
をTransformプロパティからローテーションさせるにはどうすればよいですか?
以下は、上記のスクリプトの有無にかかわらず、LineRenderer
の動作を示すイメージです。 Positionは現在上記のスクリプトを有効にして動作していますが、回転は有効ではありません。
私はユニティに慣れていないけど、1は、 'newBeginPos = transform.rotation * newBeginPos'のようなものを思うだろうか? –
存在しない 'GetRotation'関数を探していますが、現在位置取得に使用していた' GetPosition'関数があります。あなたの提案については、Rotationのオフセットを取得するためにLineRendererとそれがアタッチされているGameObjectの回転を必要とするため、動作しません。今は、このGameObjectの位置と回転を掛けるだけです。私もそれを試み、それはLineRendererを消滅させるだけです。 – Programmer
私は考えることができるが動作しないことがあるいくつかの空のgameobjects(linerendererの子)は、ラインレンダラーの各端に1つ、ラインレンダラーの変換回転を使用してそれらを回転させ、それらのgameobjects位置をラインレンダラが終了します。 – Lestat