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 错误射线;
}