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.
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_.x, 0, originalVerts*.z );*_
//verts[ i ].y = Mathf.Sin( originalVerts_.x * freqX + timer ) * scaleY;
verts[ i ].y = ( Mathf.PerlinNoise( originalVerts.x * freqX + timer, originalVerts.z * freqZ + timer ) * 2f - 1f ) * scaleY;
* }*_
* mesh.vertices = verts;*
* mesh.RecalculateBounds();*
_ timer += speed * Time.deltaTime;
}
}_