找回密码
 立即注册
查看: 7170|回复: 88

鼠标点击两点测距

[复制链接]
发表于 2013-9-27 17:32 | 显示全部楼层 |阅读模式
悬赏1U币未解决
鼠标在一个平面上点任意两点。然后测得两点间的距离(应该属于鼠标事件)

 楼主| 发表于 2013-10-14 09:37 | 显示全部楼层
哎。有悬赏都没有人写。自己解决把代码发上来。

using UnityEngine;
using System.Collections;

public class line3D : MonoBehaviour {
        private LineRenderer lineRenderer;
        private Vector3 position;
        private Vector3 []dis = new Vector3[1000];
        private float distance = 0;
        private int index = 0;
        private int LengthOfLineRenderer=0;
       
        public Camera cam;
        RaycastHit hitt = new RaycastHit();


        // Use this for initialization
        void Start () {
                lineRenderer = gameObject.AddComponent<LineRenderer>();
                lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
                lineRenderer.SetColors(Color.yellow, Color.yellow);
                lineRenderer.SetWidth(0.01f, 0.01f);
               
        }
       
        // Update is called once per frame
        void Update () {
               
                lineRenderer = GetComponent<LineRenderer>();
                if (Input.GetMouseButtonDown(1))
                {       
                        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                        RaycastHit hit;
                        if(Physics.Raycast(ray,out hit))
                        {
                                position = hit.point;                               
                                LengthOfLineRenderer++;
                                lineRenderer.SetVertexCount(LengthOfLineRenderer);                       
                                lineRenderer.SetPosition(LengthOfLineRenderer - 1, position);
                                dis[LengthOfLineRenderer - 1] = position;
                                if(LengthOfLineRenderer >= 2)
                                        distance = distance + Vector3.Distance(dis[LengthOfLineRenderer - 2],dis[LengthOfLineRenderer - 1]);
                                else
                                  distance = 0;
                        }
                 }       
                 
                 if (Input.GetMouseButtonDown(2))
                 {
                          LengthOfLineRenderer = 0;                        
                 }
        }
       
        void OnGUI()
        {
                GUILayout.Label("当前距离:" + distance);
        }
}

点评

终于解决终于解决终于解决终于解决  详情 回复 发表于 2013-10-14 09:41
回复

使用道具 举报

 楼主| 发表于 2013-10-14 09:40 | 显示全部楼层
终于解决终于解决终于解决
回复

使用道具 举报

 楼主| 发表于 2013-10-14 09:41 | 显示全部楼层
ying2035 发表于 2013-10-14 09:37
哎。有悬赏都没有人写。自己解决把代码发上来。

using UnityEngine;

终于解决终于解决终于解决终于解决
回复

使用道具 举报

发表于 2017-2-14 19:28 | 显示全部楼层
不错不错
回复

使用道具 举报

发表于 2017-2-14 19:36 | 显示全部楼层
LZ真是人才
回复

使用道具 举报

发表于 2017-2-14 19:43 | 显示全部楼层
很不错
回复

使用道具 举报

发表于 2017-2-14 19:43 | 显示全部楼层
好帖就是要顶
回复

使用道具 举报

发表于 2017-2-14 19:43 | 显示全部楼层
难得一见的好帖
回复

使用道具 举报

发表于 2017-3-4 18:56 | 显示全部楼层
LZ真是人才
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-28 18:39 , Processed in 0.151203 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表