我必须将对象从-10移动到+10 x位置。但是我想从零x.point开始移动我的对象,如何在中间位置开始lerp?
Edit2:对象应从x = 0的位置开始,移至+10 x的位置,然后移至-10 x的位置,再移至+10 x,-10 x,就像一个循环。
Vector3 pos1, pos2, pos0, pos3;
void Start()
{
pos0 = transform.position;
pos1 = pos0 + new Vector3(10, 0, 0);
pos2 = pos0 - new Vector3(10, 0, 0);
pos3 = pos1;
}
float time = 0.5f;
void FixedUpdate()
{
time += Mathf.PingPong(Time.time * 0.5f, 1.0f);
transform.position = Vector3.Lerp(pos2, pos1, time);
}
答案 0 :(得分:2)
摘自https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html上的Unity API文档
public static Vector3 Lerp(Vector3 a, Vector3 b, float t);
当t = 0时返回a。当t = 1时返回b。当t = 0.5时返回 在a和b之间的中间点。
在x = 0恰好在起点和终点之间的这种对称情况下,您可以使用lerp,并且t从t = 0.5开始。也许是这样的:
Vector3 pos1, pos2, pos0, pos3;
private float t;
void Start()
{
pos0 = transform.position;
pos1 = pos0 + new Vector3(10, 0, 0);
pos2 = pos0 - new Vector3(10, 0, 0);
pos3 = pos1;
t = 0.5
}
void FixedUpdate()
{
t += Mathf.PingPong(Time.deltaTime * 0.5f, 1.0f);
transform.position = Vector3.Lerp(pos2, pos1, t);
}
@BugFinder指出,您可能应该使用Time.deltaTime
而不是Time.time
答案 1 :(得分:0)
这是我的处理方式:
select
//removed
from
Entity1 subscripti0_
**left outer join**
Entity2 emailalert1_
on subscripti0_.id_alert=emailalert1_.iid_alert
where
emailalert1_.id_user=?