Unity 3dで円を描く方法は? 私は別のオブジェクトの周りに円を描きたいです。 円の半径は異なり、円はテクスチャ - 四角形を持ちます。Unity3Dで円を描くにはどうしたらいいですか?
答えて
See Unity Answers同様の質問です。
float theta_scale = 0.1; //Set lower to add more points
int size = (2.0 * PI)/theta_scale; //Total number of points in circle.
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
lineRenderer.SetColors(c1, c2);
lineRenderer.SetWidth(0.2F, 0.2F);
lineRenderer.SetVertexCount(size);
int i = 0;
for(float theta = 0; theta < 2 * PI; theta += 0.1) {
x = r*cos(theta);
y = r*sin(theta);
Vector3 pos = new Vector3(x, y, 0);
lineRenderer.SetPosition(i, pos);
i+=1;
}
LineRendererは、連続的なポイントが必要です。このコードを少し変更して、ラインレンダラーの代わりに円柱のゲームオブジェクトを使用することができます。私はLineRendererがちょっと面白いと思う。
最後に、最初のリンクと同様に、ユニット平面にサークルテクスチャを付けることができます。サークルの一部ではないテクスチャの部分を透明にします。次に、平面に合わせてオブジェクトに合わせて調整します。残念ながら、誰かが飛行機とほぼ平行に見える場合、この方法はあまり役に立ちません。
サークルは、中心から半径にある場合はシェーダ描画ピクセルを使用して描画できます。
Jerdakのソリューションは良いですが、コードが面倒なので、少し調整しなければなりませんでした。ここでは、クラスのコードを示します。ここではループ内でiを使ってバグを回避しています。
また、円の位置をgameObjectの位置で更新します。
using UnityEngine;
using System.Collections;
public class CircleDraw : MonoBehaviour {
float theta_scale = 0.01f; //Set lower to add more points
int size; //Total number of points in circle
float radius = 3f;
LineRenderer lineRenderer;
void Awake() {
float sizeValue = (2.0f * Mathf.PI)/theta_scale;
size = (int)sizeValue;
size++;
lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
lineRenderer.SetWidth(0.02f, 0.02f); //thickness of line
lineRenderer.SetVertexCount(size);
}
void Update() {
Vector3 pos;
float theta = 0f;
for(int i = 0; i < size; i++){
theta += (2.0f * Mathf.PI * theta_scale);
float x = radius * Mathf.Cos(theta);
float y = radius * Mathf.Sin(theta);
x += gameObject.transform.position.x;
y += gameObject.transform.position.y;
pos = new Vector3(x, y, 0);
lineRenderer.SetPosition(i, pos);
}
}
}
このコードで大きなエラーが見つかりました。ポイント(サイズ)の数は "(2 * pi/theta_scale)+ 1"であってはなりません。これにより、円が6.28回描かれるためです。サイズは "1/theta_scale + 1"にする必要があります。したがって、0.01のtheta_scaleの場合は100ポイントを描画し、0.1のtheta_scaleの場合は10ポイントを描画する必要があります。それ以外の場合はそれぞれ62回と628回を描画します。 ここに私が使用したコードがあります。
using UnityEngine;
using System.Collections;
public class DrawRadar : MonoBehaviour
{
public float ThetaScale = 0.01f;
public float radius = 3f;
private int Size;
private LineRenderer LineDrawer;
private float Theta = 0f;
void Start()
{
LineDrawer = GetComponent<LineRenderer>();
}
void Update()
{
Theta = 0f;
Size = (int)((1f/ThetaScale) + 1f);
LineDrawer.SetVertexCount(Size);
for(int i = 0; i < Size; i++){
Theta += (2.0f * Mathf.PI * ThetaScale);
float x = radius * Mathf.Cos(Theta);
float y = radius * Mathf.Sin(Theta);
LineDrawer.SetPosition(i, new Vector3(x, y, 0));
}
}
}
あなたはThetaScaleで割って、「サイズ」の数値を変更した場合、あなたは抜本的なゲージ/パイチャートの種類のグラフィックを作ることができます。
- 1. 線を描くにはどうしたらいいですか?
- 2. ObjectiveCとMacOS用のCocoaで、半円で泡を描くにはどうしたらいいですか?
- 3. PlayNで画面に円を描くにはどうしたらいいですか?
- 4. グリッド上で円を描くにはどうすればいいですか?
- 5. ブレンダーからunity3dにシリンダーをunity3dシリンダーのようにエクスポートするにはどうしたらいいですか?
- 6. シーンウィンドウに青い線を描くにはどうしたらいいですか?
- 7. Android webviewでマスク(円)を描くにはどうすればよいですか?
- 8. XMLで円の中に小さな円/点を描くにはどうすればいいですか?
- 9. OpenGLでサーフェス法線を描くにはどうしたらいいですか?
- 10. Androidで円を描いて円を描く
- 11. 円で円を描く
- 12. UILabelで円を描くには?私はこのようないくつかのことをしたい
- 13. HighChartsで対数スケールで円を描くにはどうすればいいですか?
- 14. アニメーションでwinRTで円弧を描くにはどうすればいいですか?
- 15. CoreGraphicsを使用して半円を描くにはどうすればいいですか?
- 16. 新しい位置に円を描く
- 17. 2色のSVGで円を描くにはどうすればいいですか?
- 18. 円を円として描いたリーフレット
- 19. リストからキャンバスを描くにはどうすればいいですか
- 20. ビットマップに円を描かないで描画する方法は?
- 21. クラスの中にある円を描くにはどうすればいいですか?
- 22. CSSの中に2つの非同心円を描くにはどうすればいいですか?
- 23. 半径を指定して円と矩形を描くにはどうすればよいですか?
- 24. Googleマップapiを使用して点線円を描くにはどうすればよいですか?
- 25. スレッドを聞くにはどうしたらいいですか?
- 26. PILで画像上に透明な線を描くにはどうしたらいいですか?ここ
- 27. PyGameで円を描くには?
- 28. CSSで円の円を描く
- 29. libgdxで円と円弧を描く
- 30. GoogleマップV3で楕円形を描くにはどうすればよいですか?
@ Jerdakのコードは、非常に多くの不要な線を描画するが、このコードは一度だけ通過し、単一のパスで各コーナーを描画するので、これは、正しい答えでなければなりません。ただし、無記名ラインの場合、代わりにこれを行うべきです: 'Size =(int)((1f/ThetaScale)+ 2f)' –