我正在使用Windows 7旗舰版(SP1), Unity 5.3.2(也用5.3.0,5.3.1,5.2.4测试)。
我造成了一个在编辑器,独立版本,Android版本中可见的错误。
简单的sceene包含: Sphere - 没有球形colider的GameObject 和带有 Rigidbody2D的动作脚本使用
private Rigidbody2D m_rigidbody;
void Start() {
m_rigidbody = GetComponent<Rigidbody2D>();
}
void Update() {
if (Input.GetAxis("Horizontal") > 0) //RIGHT
{
m_rigidbody.velocity = new Vector2(1, 0);
} else if (Input.GetAxis("Horizontal") < 0) //LEFT
{
m_rigidbody.velocity = new Vector2(-1, 0);
}
else
{
m_rigidbody.velocity = new Vector2(0, 0);
}
}
3立方体 - 静态游戏对象(为了看到该球体正在移动的abillity) MainCamera - 经典相机,随后使用CS脚本:
public Transform m_Target;
void Update () {
transform.position = Vector3.Lerp(transform.position, new Vector3(m_Target.position.x, transform.position.y, transform.position.z), 1f);
}
我在脚本中使用了FixedUpdate(没有解决问题)。
使用不同的Interpolate设置:甚至用于(球体和相机)运动Rigidbody2D Extrapolate设置(没有解决问题)。
尝试使用Rigidbody(而不是os Rigidbody2D)。
我发现了类似问题Link to unity3d.ru forum
(没解决问题)
更新: 我已将动作脚本设置为相机并关闭“相机跟踪”。只是简单的标准相机向右(或向左)移动,速度和结果不变 - 静态物体在抽搐......
答案 0 :(得分:0)
在您的代码中,
transform.position = Vector3.Lerp(transform.position, new Vector3(m_Target.position.x, transform.position.y, transform.position.z), 1f);
...你的插值因子是1f。这只会让它直接跳到目标值而不是 lerping 它。我建议将其更改为其他内容,例如0.75f。也就是说,
transform.position = Vector3.Lerp(transform.position, new Vector3(m_Target.position.x, transform.position.y, transform.position.z), 0.75f);
我希望有所帮助!