C# 如果station Float不是';t交换值并保持循环?

C# 如果station Float不是';t交换值并保持循环?,c#,unity3d,C#,Unity3d,所以我有一个matrix3x3脚本,我用它制作了一个平移和旋转脚本,我有一个2D网格对象,我在场景中渲染,我试图在两点之间反弹 右边是10,左边是-10 当对象击中点时,我希望它改变方向和旋转(平移和角度) 当我运行代码时,对象首先向右移动(10),然后到达该点并开始抖动。。。就像它一直与这两个值战斗,不会改变方向或角度回到-10 仅供参考:UpdateMesh用于渲染场景中对象的网格顶点和颜色 我已经把它放在了它自己的方法中(而不是仅仅放在更新中),并且尝试了摆弄这些值,但是我仍然遇到了同样的

所以我有一个matrix3x3脚本,我用它制作了一个平移和旋转脚本,我有一个2D网格对象,我在场景中渲染,我试图在两点之间反弹

右边是10,左边是-10

当对象击中点时,我希望它改变方向和旋转(平移和角度)

当我运行代码时,对象首先向右移动(10),然后到达该点并开始抖动。。。就像它一直与这两个值战斗,不会改变方向或角度回到-10

仅供参考:UpdateMesh用于渲染场景中对象的网格顶点和颜色

我已经把它放在了它自己的方法中(而不是仅仅放在更新中),并且尝试了摆弄这些值,但是我仍然遇到了同样的问题

我希望有人能给我指出正确的方向(我觉得这与我的编码顺序有关,但我不确定…)

void RotateAndTranslate()
{
UpdateMesh();
Vector3[]顶点=网格顶点;
//角度+=旋转速度*时间增量;
//偏移量2+=1*Time.deltaTime*速度;
offsetpos=offset2;
如果(偏移量2=-10)
{
偏移量2+=-1*时间增量*速度;
角度+=旋转速度*时间增量;
}
//得到变换矩阵
Matrix3x3 T=变换.平移(offsetpos,0);
矩阵x3x3 R=变换旋转(角度);
//Matrix3x3 T2=变换.Translate(-offset.x,-offset.y);
Matrix3x3 T2=变换.Translate(-offset.x,-offset.y);
矩阵x3x3 M=T*R;
对于(int i=0;i
看看你的

if (offset2 <= 10)
{
    offset2 += 1 * Time.deltaTime * Speed;
    angle -= rotationSpeed * Time.deltaTime;
}
else if (offset2 >= -10)
{
    offset2 += -1 * Time.deltaTime * Speed;
    angle += rotationSpeed * Time.deltaTime;
}
区别:如果达到相应的限制,现在只会将方向反转一次。

看看你的

if (offset2 <= 10)
{
    offset2 += 1 * Time.deltaTime * Speed;
    angle -= rotationSpeed * Time.deltaTime;
}
else if (offset2 >= -10)
{
    offset2 += -1 * Time.deltaTime * Speed;
    angle += rotationSpeed * Time.deltaTime;
}

区别:如果达到相应的限制,现在只会将方向反转一次。

想想你的
if
s。第一个是什么意思?当该值再次从10下降时会发生什么?想想你的
if
s。第一个是什么意思?当数值再次从10下降时会发生什么?谢谢你解释得容易多了+我的大脑能真正理解,欣赏它:)谢谢你解释得容易多了+我的大脑能真正理解,欣赏它:)
private bool isGoingRight;

...

int offsetSign = isGoingRight ? 1 : -1;
int angleSign = isGoingRight ? -1 : 1;

if (isGoingRight && offset2 >= 10)
{
    isGoingRight = false;
}
else if (!isGoingRight && offset2 <= -10)
{
    isGoingRight = true;
}

offset2 += offsetSign * Speed * Time.deltaTime;
angle += angleSign * rotationSpeed * Time.deltaTime;