Unity3d 用鼠标拾取模型顶点 三
2013-01-15 23:25
253 查看
Unity3d 用鼠标拾取模型顶点 三
我们接着第二篇,描绘点的方式,就用自带的Sphere,然后做成预制件(Prefab),然后在顶点的位置,绘制Sphere,效果还可以!上一节说了,找到鼠标发出的射线与模型的碰撞面三角形(Triangle),我的做法是,判断鼠标Input.mousePosition与三角形的三个顶点哪个顶点最近,这个就是鼠标选择顶点!
代码如下:
其中MinDistanceMouse方法就是选择哪个是离鼠标最近的点!
这一章节说到这儿,下一节开始编辑顶点,呵呵!
我们接着第二篇,描绘点的方式,就用自带的Sphere,然后做成预制件(Prefab),然后在顶点的位置,绘制Sphere,效果还可以!上一节说了,找到鼠标发出的射线与模型的碰撞面三角形(Triangle),我的做法是,判断鼠标Input.mousePosition与三角形的三个顶点哪个顶点最近,这个就是鼠标选择顶点!
代码如下:
using UnityEngine; using System.Collections; public class DrawBox : MonoBehaviour { public GameObject sphere1; // Update is called once per frame void Update () { RaycastHit hit; Ray ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 100)) { Debug.Log(hit.collider.gameObject.name); MeshCollider collider = hit.collider as MeshCollider; if (collider == null||collider.sharedMesh==null) return; Mesh mesh0 = collider.sharedMesh; Vector3[] vertices = mesh0.vertices; int[] triangles = mesh0.triangles; Vector3 p0 = hit.transform.TransformPoint(vertices[triangles[hit.triangleIndex * 3]]); Vector3 p1 = hit.transform.TransformPoint(vertices[triangles[hit.triangleIndex * 3+1]]); Vector3 p2 = hit.transform.TransformPoint(vertices[triangles[hit.triangleIndex * 3+2]]); sphere1.transform.position = MinDistanceMouse(p0, p1, p2); } } Vector3 MinDistanceMouse(Vector3 v1, Vector3 v2, Vector3 v3) { Vector3 mouseposition = Input.mousePosition; float distance1 = Vector3.Distance(v1, mouseposition); float distance2 = Vector3.Distance(v2, mouseposition); float distance3= Vector3.Distance(v3, mouseposition); if (distance1 < distance2 && distance1 < distance3) return v1; if (distance2 < distance1 && distance2 < distance3) return v2; if (distance3 < distance1 && distance3 < distance2) return v3; return Vector3.zero; } }
其中MinDistanceMouse方法就是选择哪个是离鼠标最近的点!
这一章节说到这儿,下一节开始编辑顶点,呵呵!
相关文章推荐
- Unity3d 用鼠标拾取模型的顶点
- Unity3d 用鼠标拾取模型的顶点 二
- Unity3d 用鼠标拾取模型的顶点
- Unity3d 用鼠标拾取模型的顶点
- Unity3d 拖动鼠标旋转模型
- Unity3d 鼠标滚动拉近模型、鼠标右键旋转模型、鼠标中键拖拽模型
- OGRE 鼠标拾取模型并显示
- Unity3d 鼠标拾取
- OGRE 鼠标拾取模型并显示
- Unity3D 入门小技巧——鼠标拾取并移动物体
- unity3d 2d游戏之鼠标拉近旋转拖拽模型
- unity3d中的自定义模型的顶点法线和建模软件中的术语“软硬边”和立方体
- unity3d 2d游戏鼠标拉近旋转拖拽模型操作
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
- unity鼠标拾取网格顶点
- Unity3d 鼠标拾取 javascript
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
- 分享一个Unity3D点击模型跟随鼠标移动的小脚本(包括屏幕视图到三维空间的坐标转换)
- 解决Unity3D导入的3D(3DsMAX)模型不能响应鼠标事件
- [原]解决Unity3D导入的3D(3DsMAX)模型不能响应鼠标事件