private void Start() { _ground = GameObject.FindGameObjectWithTag("Ground").GetComponent <GroundComponent>(); _groundMeshBuilder = _ground.transform.Find("Ground_Sprite").GetComponent <ColliderToMesh>(); _groundCollider = _groundMeshBuilder.GetComponent <EllipseCollider2D>(); _groundShadowMeshBuilder = _ground.transform.Find("GroundShadow_Sprite").GetComponent <ColliderToMesh>(); _groundShadowCollider = _groundShadowMeshBuilder.GetComponent <EllipseCollider2D>(); DOTween.To(() => _ground.Size, x => _ground.Size = x, 0.1f, _ground.Duration); }
public override void OnInspectorGUI() { if (GUILayout.Button("Update")) { ((ColliderToMesh)target).CreateMesh(); } ColliderToMesh mesh = target as ColliderToMesh; mesh.Reverse = EditorGUILayout.Toggle("Reverse:", mesh.Reverse); mesh.ReverseNormals = EditorGUILayout.Toggle("ReverseNormals:", mesh.ReverseNormals); }
public override void OnInspectorGUI() { DrawDefaultInspector(); ColliderToMesh myScript = (ColliderToMesh)target; if (GUILayout.Button("Collider To Mesh", GUILayout.ExpandWidth(false))) { myScript.colliderToMesh(); } }
// Update is called once per frame void Update() { if (wobblerMultiplier == 0) { return; } if (Wobbling) { for (int i = 0; i < baseVertices.Length; ++i) { WobbleData wobble = data[i]; wobble.angle += Time.deltaTime * wobble.angleVel; float globalMultiplier = wobblerMultiplier; currentVertices[i].x = baseVertices[i].x + Mathf.Cos(Mathf.Deg2Rad * wobble.angle) * wobble.radius * globalMultiplier; currentVertices[i].y = baseVertices[i].y + Mathf.Sin(Mathf.Deg2Rad * wobble.angle) * wobble.radius * globalMultiplier; data[i] = wobble; } ColliderToMesh.SetMeshVertices(mf.mesh, currentVertices); } }
void DrawLake() { // Create lake object GameObject mygameobject = new GameObject(); mygameobject.transform.position = center; mygameobject.layer = LayerMask.NameToLayer("Water"); MeshRenderer renderer = mygameobject.AddComponent <MeshRenderer>() as MeshRenderer; // Put water effect on top of it /* * GameObject waterEffect = GameObject.Instantiate(Resources.Load("Water" + System.IO.Path.DirectorySeparatorChar.ToString() + "grad") as GameObject, Vector2.zero, Quaternion.identity) as GameObject; * waterEffect.transform.eulerAngles = new Vector3(0, 0, UnityEngine.Random.Range(0, 360)); * float scale = radius / 10; * waterEffect.transform.localScale = new Vector3(scale,scale,scale); * waterEffect.transform.parent = mygameobject.transform; * waterEffect.transform.localPosition = Vector2.zero; */ // Create collider float seed = UnityEngine.Random.Range(0, 1000); float waterBias = 1; float size = .3f; float distanceWeight = .05f; float distanceFromEdgeWeight = 5000; for (int x = 0; x < lakeGrid.GetLength(0); x++) { for (int y = 0; y < lakeGrid.GetLength(1); y++) { float xPos = GetPosition(x, true); float yPos = GetPosition(y, false); float height = Mathf.PerlinNoise((xPos + seed) * size, (yPos + seed) * size) * .1f; float distance = Mathf.Sqrt(Mathf.Pow(center.x - xPos, 2) + Mathf.Pow(center.y - yPos, 2)); float relativeDistance = distance / radius; if (relativeDistance + height < waterBias) { lakeGrid[x, y] = 1; } } } List <Vector2> points = new List <Vector2>(); Vector2 orginTemp = new Vector2(0, 0); for (int x = 0; x < lakeGrid.GetLength(0); x++) { for (int y = 0; y < lakeGrid.GetLength(1); y++) { if (lakeGrid[x, y] == 1) { if (!IsSurroundedByLake(x, y)) { float xPos = GetPosition(x, true) - center.x; float yPos = GetPosition(y, false) - center.y; orginTemp.x += xPos; orginTemp.y += yPos; points.Add(new Vector2(xPos, yPos)); } } } } Vector2 orgin = new Vector2(orginTemp.x / points.Count, orginTemp.y / points.Count); Debug.Log(orgin + "orgin"); Debug.DrawLine(orgin, orgin + new Vector2(300, 300), Color.blue); Vector2[] sortedArray = points.ToArray(); Array.Sort(sortedArray, new ClockwiseComparer(orgin)); PolygonCollider2D collider = mygameobject.AddComponent <PolygonCollider2D>(); collider.SetPath(0, sortedArray); // Create mesh mygameobject.AddComponent <MeshFilter>(); ColliderToMesh colliderToMesh = mygameobject.AddComponent <ColliderToMesh>() as ColliderToMesh; colliderToMesh.init(collider, mygameobject, orgin); renderer.material = Resources.Load("WaterSurface") as Material; DrawLilyPads(); DrawReeds(); }