- Home /
How to make a fluid carpet effect
Hi guys, i dont know very well how to explain this, but i basicly add a plane on my scene and put a texture of a carpet, i want that carpet to be like the Alladin carpet on the cartoon, i want the carpet to make a move like a wave in the same place, i dont know how to approach this, i searched a lot, the movement i want is in the same place like the (sin) in math, if you guys can help me i appreciate a lot.
You need create a plane with bones in Blender/$$anonymous$$aya or any other modeling program, and create an animation moving the bones.
Answer by AlucardJay · Dec 07, 2016 at 06:09 AM
For each vertex : use the vertex position as a reference in the wave, add a timer value, now evaluate sine value. Here is an example using sine and perlin (perlin looks more 'random', and can be evaluated with 2 variables). In a new scene, create a plane and attach the script. In play mode, modify the public inspector variables.
using UnityEngine;
using System.Collections;
public class PerlinPlane : MonoBehaviour
{
public float speed = 2f;
public float scaleY = 1f;
public float freqX = 0.2f;
public float freqZ = 3.6f;
private float timer = 0f;
private Mesh mesh;
private Vector3[] originalVerts;
void Start()
{
mesh = GetComponent< MeshFilter >().mesh;
originalVerts = new Vector3[ mesh.vertices.Length ];
System.Array.Copy( mesh.vertices, originalVerts, mesh.vertices.Length );
}
void Update()
{
Vector3[] verts = new Vector3[ originalVerts.Length ];
for ( int i = 0; i < originalVerts.Length; i++ )
{
verts[ i ] = new Vector3( originalVerts[i].x, 0, originalVerts[i].z );
//verts[ i ].y = Mathf.Sin( originalVerts[i].x * freqX + timer ) * scaleY;
verts[ i ].y = ( Mathf.PerlinNoise( originalVerts[i].x * freqX + timer, originalVerts[i].z * freqZ + timer ) * 2f - 1f ) * scaleY;
}
mesh.vertices = verts;
mesh.RecalculateBounds();
timer += speed * Time.deltaTime;
}
}
Your answer
Follow this Question
Related Questions
How to Adjust Size of objects/Camera's size for different resolutions 1 Answer
How do I make a blinking object? 0 Answers
NetworkServer method to spawn map objects (once in a match) 0 Answers
How to check if Trigger was touched or clicked? 1 Answer
Objects created on ProBuilder are disappearing from scene since Unity update, what's going on? 1 Answer