zoukankan      html  css  js  c++  java
  • 自动校准模型中心点

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ceshi2 : MonoBehaviour
    {
    
        void Start()
        {
            obj = GameObject.Find("Cube").transform;
    
            foreach (Transform tr in transform)
            {
                tr.gameObject.AddComponent<MeshCollider>();
            }
    
         
        }
      Transform obj;
        void Update()
        {
            TarRaycast();
    
            if (V.Count==30)
            {
                Vector3 center=Vector3.zero;
                foreach (Vector3 v in V)
                {
                    center += v;
                }
                center = center / 30;
                obj.position = center;
    
                float f = transform.localScale.x;
    
                transform.parent = obj;
                obj.position = Vector3.zero;
                obj.localScale = Vector3.one / f;
            }
    
    
    
    
    
        }
        Vector3 V1, V2;
    
        Vector3 第一次碰撞点;
        bool 是第一次碰撞;
    
        List<Vector3> V = new List<Vector3>();
    
    
        Vector3 mp;//鼠标位置
        Transform targetTransform;//点选的物体
    
    
        bool TarRaycast()
        {
            mp = Input.mousePosition;
            targetTransform = null;
    
            RaycastHit hitInfo;
    
            V1 = new Vector3(Random.Range(-100, 100), Random.Range(-100, 100), Random.Range(-100, 100));
            if (!是第一次碰撞)
                V2 = new Vector3(Random.Range(-100, 100), Random.Range(-100, 100), Random.Range(-100, 100));
            else
            {
                V2 = 第一次碰撞点 + new Vector3(Random.Range(-30, 30), Random.Range(-30, 30), Random.Range(-30, 30));
            }
            bool grounded = Physics.Linecast(V1,V2,out hitInfo);
    
            if (grounded)
            {
                错误射线 = -10000;
                if (是第一次碰撞 == false)
                {
                    第一次碰撞点 = hitInfo.point;
                    是第一次碰撞 = true;
                }
                Debug.LogError("碰到了:" + hitInfo.point);
                V.Add(hitInfo.point);
                Debug.DrawLine(V1, V2, Color.red, 100f);
    
            }
            else
            {
                错误射线++;
                Debug.LogError("没碰到");
                if (错误射线 > 500)
                {
                    transform.localScale += new Vector3(0.05f,0.05f,0.05f);
                }
            }
           
            return false;
    
        }
        int 错误射线;
    }
  • 相关阅读:
    ansible-乱
    linux-PXE-12
    linux-ntp-10
    linux-selinxu---性能 -8
    linux-系统启动流程-7
    linux-网络管理-6
    linux-文件系统-5
    linux-包管理器-4
    linux-shell脚本基础-2
    linux-history-ps1-1
  • 原文地址:https://www.cnblogs.com/Feiyuzhu/p/9430964.html
Copyright © 2011-2022 走看看