private void UpdatePosition() { if (m_fluid) { ray = new Ray(gameObject.transform.position, Vector3.forward); if (m_tempCol.Raycast(ray, out m_HitInfo, distance)) { m_FluidSSize = new Vector2(m_fluid.GetWidth(), m_fluid.GetHeight()); m_PosInFluidSpace = new Vector2(m_HitInfo.textureCoord.x * m_FluidSSize.x, m_HitInfo.textureCoord.y * m_FluidSSize.y); m_velocityInFluidSpace = m_fluid.GetVelocity((int)m_PosInFluidSpace.x, (int)m_PosInFluidSpace.y) * Time.deltaTime; m_WorldVelocity = new Vector2((m_velocityInFluidSpace.x * m_fluid.GetRenderSize().x) / m_FluidSSize.x, (m_velocityInFluidSpace.y * m_fluid.GetRenderSize().y) / m_FluidSSize.y); if (!useRigidbody) { transform.position += Vector3.Lerp(transform.position, m_WorldVelocity, lerpSpeed) * Time.deltaTime / m_Weight; } else { rig.velocity += Vector2.Lerp(transform.position, m_WorldVelocity, lerpSpeed) * Time.deltaTime / m_Weight; } } } }