iLeichun

当前位置: 首页 > Unity3d

Unity3d实时获取当前位置的地形高度

分类:Unity3d   来源:网络   时间:2017-09-02 23:49:17

如果要把一个游戏对象放置在地形的某个固定的位置,代码里面直接写死也是可以的。但这样很不方便,

其一、要经过多次的调试才能放到指定位置,特别是y坐标,太大了太小了得到的效果都不是很逼真;

其二、对于运动的物体(例如一直往前走的人物角色),由于地形高度不是一样的(除非是一个平面),当走到高山的时候脚就被埋了,当走到低洼的地方脚就浮起来了;

 

要解决这种问题,就有必要实时获取当前地形的高度,unity3d提供了Terrain.activeTerrain.SampleHeight()函数用来获取指定点的地形高度,其原型为:

public float SampleHeight(Vector3 worldPosition);

参数worldPosition表示当前位置,由于要实时获取地形高度,所以这个参数也要实时获取,因此应该写在Update方法中,示例代码如下:

void Update () {

        Vector3 pos = transform.position;              // 获取当前游戏对象的位置

        pos.y = Terrain.activeTerrain.SampleHeight(pos);    // 获取当前位置的地形高度

        transform.position = pos;      

}

 

更多