Unity3D制作流动的水面

这个游戏的画面效果在ipad上真的非常稀有,尤其是水面真的非常棒!水面的顶点位移是如何实现的呢?一波一波的,很逼真!

解答:

Unity3D制作流动的水面,水流代码 :

var scale = 10.0;

var speed = 1.0;

private var baseHeight : Vector3[];

var useOriginal : boolean = false;

function Update () {

var mesh : Mesh = GetComponent(MeshFilter).mesh;

if (baseHeight == null)

baseHeight = mesh.vertices;

// gameObject.Destroy(GetComponent(MeshCollider));

var vertices = new Vector3[baseHeight.Length];

for (var i=0;i

{

var vertex = baseHeight[i];

if (useOriginal) {

vertex.y += Mathf.Sin(Time.time * speed+ baseHeight[i].x + baseHeight[i].y + baseHeight[i].z) * scale;

} else {

vertex.y += Mathf.Sin(Time.time * speed+ baseHeight[i].x + baseHeight[i].y) * (scale*.5) + Mathf.Sin(Time.time * speed+ baseHeight[i].z + baseHeight[i].y) * (scale*.5);

}

vertices[i] = vertex;

}

mesh.vertices = vertices;

mesh.RecalculateNormals();

gameObject.Destroy(GetComponent(MeshCollider));

var collider : MeshCollider = GetComponent(MeshCollider);

if (collider == null) {

collider = gameObject.AddComponent(MeshCollider);

collider.isTrigger = true;

}

}

新建一个plane,你把它挂上看看……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值