前言
在unity中,要让一个物体变得让人感到轻飘飘的,就可以给一个物体添加上浮动组件。今天我们就来实现它。
方法
我们先来看一下函数的曲线。
在这条曲线上,随着向右移动,也就能浮动着运动了,但是,由于内存限制,会溢出,就会导致循环不连贯。于是我们就选取曲线的一段循环节,找到循环节的最小值和最大值。
我们得到了循环节的最小值是,最大值是,还有一个规律,就是如果你把值乘,那么最小值和最大值分别是和。
至于高度的问题,只需要函数的结果乘以最大高度而可。最终公式应该就是这样子:
由此,现在打开unity,即可写浮动组件。
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class Float : MonoBehaviour
{
public float speed = 1;
public float high = 1;
private float x;
public float ox;//用于设定物体浮动时的x轴
public float oy;//用于设定物体浮动时的y轴
public float oz;//用于设定物体浮动时的z轴
void Start()
{
x = -3.14f / speed;
ox = transform.position.x;
oy = transform.position.y;
oz = transform.position.z;
}
void Update()
{
transform.position = new Vector3(ox, oy + Mathf.Sin(x * speed) * high, oz);
x += 0.01f;
if (x > 3.14f / speed)
{
x = -3.14f / speed;
}
}
}
之后,可以开始去看看效果了。
后言
在梦日记及其派生之中,需要用到循环地图,这时,浮动组件虽然有用,远不及循环地图组件有用,下篇博客中,我们就实现这个循环地图组件。