void Init() { waterObjects = new List <Transform>(); prevY = cacheTransform.position.y; prevX = cacheTransform.position.x; colliderAmount = Mathf.RoundToInt(width) * resolution; pointAmount = colliderAmount + 1; posX = new float[pointAmount]; posY = new float[pointAmount]; velY = new float[pointAmount]; accY = new float[pointAmount]; points = new Vector2[pointAmount * 2]; waveColliders = new GameObject[colliderAmount]; for (int i = 0; i < pointAmount; i++) { posY[i] = cacheTransform.position.y; posX[i] = cacheTransform.position.x + width * i / colliderAmount; accY[i] = 0; velY[i] = 0; if (i < colliderAmount) { waveColliders[i] = new GameObject(); waveColliders[i].name = "ZippyWater2DCollider"; waveColliders[i].transform.parent = transform; waveColliders[i].transform.position = new Vector2(cacheTransform.position.x + width * (i + 0.5f) / colliderAmount, cacheTransform.position.y + colliderHeightOffset - (height + colliderHeightOffset) * .5f); waveColliders[i].transform.localScale = new Vector2(width / colliderAmount * .9f, height + colliderHeightOffset); ZippyWater2DCollider col = waveColliders[i].AddComponent <ZippyWater2DCollider>(); col.index = i; BoxCollider2D bx = waveColliders[i].AddComponent <BoxCollider2D>(); col.height = bx.bounds.size.y; bx.isTrigger = true; } } BoxCollider2D bigc = GetComponent <BoxCollider2D>(); bigc.offset = new Vector2(width * 0.5f, colliderHeightOffset - (height + colliderHeightOffset) * .5f); bigc.size = new Vector2(width, height + colliderHeightOffset); SetBubbleParticles(); if (waterMesh == null) { waterMesh = new Mesh(); } GenerateMesh(); TileMaterial(); if (waterColliders == null) { waterColliders = new ZippyWater2DCollider[waveColliders.Length]; for (int i = 0; i < waterColliders.Length; i++) { waterColliders[i] = waveColliders[i].GetComponent <ZippyWater2DCollider>(); } } }
void UpdateWaveColliderPositions() { if (!updateWaveColliders) { Invoke("UpdateWaveColliderPositions", updateWaveCollidersDelay); return; } for (int i = 0; i < waveColliders.Length; i++) { ZippyWater2DCollider c = waveColliders[i].GetComponent <ZippyWater2DCollider>(); c.cacheTransform.position = new Vector2(c.cacheTransform.position.x, cacheTransform.position.y + colliderHeightOffset + posY[i] - c.height * .75f); } Invoke("UpdateWaveColliderPositions", updateWaveCollidersDelay); }