私はUnity3DプロジェクトにおけるラインレンダラlineRenderer0_2を持つ2つのゲームオブジェクト(sphereObject0とsphereObject2)を接続しようとしています。実行時にラインレンダラの開始位置と終了位置を更新するには?
最初は細かい線が表示されます。私の問題は、sphereObject0とsphereObject2の位置に一致するように、その開始位置と終了位置を更新するためにラインレンダラーが必要であるということです。
いくつかの理由から、私のラインレンダラは絶対に静的で、GameObjectsが最終的に動き回る球と共に開始点と終了点を調整する方法を見つけることができません。
私のC#スクリプトは、私が間違っていることを考えていますか?どんな助けでも大歓迎です!
using UnityEngine;
using System.Collections;
public class autoCreateNetwork : MonoBehaviour {
public bool sphereHasGravity = false;
private Collider coll;
private Renderer rend;
private SpringJoint springJoint;
public Material lines;
GameObject sphereObject0;
GameObject sphereObject2;
LineRenderer lineRenderer0_2 ;
void Start() {
// Spawn a sphere and set it up
sphereObject0 = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphereObject0.transform.position = new Vector3(-10.2571400951f, 98.8977277884f, -19.9870244083f);
Rigidbody sphereBody0 = sphereObject0.AddComponent<Rigidbody>();
sphereBody0.mass = 1f;
// Physics model
coll = sphereBody0.GetComponent<Collider>();
PhysicMaterial material0 = new PhysicMaterial();
material0.dynamicFriction = 1;
coll.material = material0;
coll.material.bounciness = .8f;
// Render (color, smoothness, etc.)
rend = sphereBody0.GetComponent<Renderer>();
rend.material.color = new Color32(171,166,164,255);
rend.material.SetFloat("_Metallic", 0.0f);
rend.material.SetFloat("_Glossiness", 0.0f);
sphereBody0.useGravity = sphereHasGravity;
sphereBody0.transform.localScale = new Vector3(0.5f,0.5f,0.5f);
// Spawn a sphere and set it up
sphereObject2 = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphereObject2.transform.position = new Vector3(-28.1943570987f, 89.5665878403f, 5.43686642264f);
Rigidbody sphereBody2 = sphereObject2.AddComponent<Rigidbody>();
sphereBody2.mass = 1f;
// Physics model
coll = sphereBody2.GetComponent<Collider>();
PhysicMaterial material2 = new PhysicMaterial();
material2.dynamicFriction = 1;
coll.material = material2;
coll.material.bounciness = .8f;
// Render (color, smoothness, etc.)
rend = sphereBody2.GetComponent<Renderer>();
rend.material.color = new Color32(105,150,187,255);
rend.material.SetFloat("_Metallic", 0.0f);
rend.material.SetFloat("_Glossiness", 0.0f);
sphereBody2.useGravity = sphereHasGravity;
sphereBody2.transform.localScale = new Vector3(0.5f,0.5f,0.5f);
// Spawn a line and set it up
GameObject line0_2 = new GameObject();
LineRenderer lineRenderer0_2 = line0_2.AddComponent<LineRenderer>();
lineRenderer0_2.material = lines;
lineRenderer0_2.widthMultiplier = 0.0482773661501f;
lineRenderer0_2.SetPosition(0, sphereObject0.transform.position);
lineRenderer0_2.SetPosition(1, sphereObject2.transform.position);
float alpha0_2 = .9f;
Gradient gradient0_2 = new Gradient();
gradient0_2.SetKeys(
new GradientColorKey[] { new GradientColorKey(new Color32(171,166,164,255), 0.0f), new GradientColorKey(new Color32(105,150,187,255), 1.0f) },
new GradientAlphaKey[] { new GradientAlphaKey(alpha0_2, 0.0f), new GradientAlphaKey(alpha0_2, 1.0f) }
);
lineRenderer0_2.colorGradient = gradient0_2;
lineRenderer0_2.useWorldSpace = true;
}
void Update() {
lineRenderer0_2.SetPosition(0, sphereObject0.transform.position);
lineRenderer0_2.SetPosition(1, sphereObject2.transform.position);
}
}
これはすばらしい(そして本当にクリアな)、Guntherに感謝します! – Rodolphe