加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

unity 在Scene中,绘制一个圆锥体

(2017-06-07 16:07:08)
分类: unity3d
http://s9/mw690/005N7Rnmzy7bGv21swg78&690在Scene中,绘制一个圆锥体" TITLE="unity 在Scene中,绘制一个圆锥体" />

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

public class JarodConeDemo : MonoBehaviour {


public float beginAngle;//起始角度
public float endAngle;//结束角度

public Vector3 beginPoint;
public Vector3 targetPoint ;
[Range(3,20)]
public int totalPoint = 10;

[Range(0,2)]
public float radius;


public GameObject obj = null;

public Vector3 pointUp;

public Quaternion originQuaternion;

public List pointList;

void Start () {

}
// Update is called once per frame
void Update () {

}

void OnDrawGizmos()
{
Gizmos.color = Color.red;

Gizmos.DrawLine (beginPoint, targetPoint);

Vector3 dirTemp = targetPoint - beginPoint;


if (obj == null) {
obj = new GameObject ();
pointList = new List ();

return;

}

originQuaternion = Quaternion.LookRotation (dirTemp);

Gizmos.color = Color.green;

pointList.Clear();

for (int i = 0; i <= totalPoint; ++i) 
{
obj.transform.rotation = originQuaternion;

obj.transform.Rotate (Vector3.forward, beginAngle+i*(endAngle-beginAngle)/totalPoint);

pointUp = obj.transform.up * radius;

Gizmos.DrawLine (targetPoint, targetPoint + pointUp);

pointList.Add (targetPoint + pointUp);
}
Gizmos.color = Color.yellow;

for (int i = 0; i < totalPoint; ++i) 
{
Gizmos.DrawLine (pointList[i], pointList[i+1]);
}

Gizmos.color = new Color (1, 1, 1, 0.3f);
for (int i = 0; i <= totalPoint; ++i) 
{
Gizmos.DrawLine (pointList[i],beginPoint);
}

}
}


我们可以通过两点,确认一条直线,

但是,与这个直线垂直的面,却有无数个,

如果我们知道这条直线上的一个点,

那么,与这条直线垂直的面,是唯一的。

这里,我借助了 unity 自身的 GameObject ,

将其坐标和角度都确定好了之后,

我们假设,这个物体,是一个 石英表盘,

12点的方向,就像是我们头顶的方向,

如果我们张开胳膊,摆出 十字架的姿势,

那么,3点,9点,6点,对应了我们的 左右手和脚。

如果我们将钟表以垂直于自己表盘的方向进行旋转,

那么,我们头顶,就会绕着表盘的中心进行旋转。

就像秒针 指向 12点,又指向 1点,又指向 2点,顺时针,

正好经过了整个表盘的 360度 。

我们每隔一定的角度,记录下当前指针所处在的空间位置,

再将这些位置连接起来,就能形成一个 圆形,或者 扇形的面。




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有