我尝试编写使对象移动到点的代码让我们假设 (0,0)和(10,0) 这是我试图写的代码,因为对开发的任何建议都不要犹豫评论:)。
using UnityEngine;
using System.Collections;
public class walk2 : MonoBehaviour {
// Use this for initialization
void Start () { }
void Update () {
float move = 1.00f;
for ( int i = 0 ; i < 10 ; i++){
transform.position = new Vector2 (transform.position.x + move, transform.position.y);
}
for ( int j = 0 ; j < 10 ; j++ ){
transform.position = new Vector2(transform.position.x - move, transform.position.y);
}
}
}
答案 0 :(得分:3)
我建议每次更新只进行一次移动 -
private float move = 0.1f;
void Update() {
if (transform.position.x < 10) {
transform.position = new Vector2 (transform.position.x + move, transform.position.y);
} else {
transform.position = new Vector2 (transform.position.x - move, transform.position.y);
}
}
这将使对象在每个刻度上移动0.1个单位。我相信Unity每秒大约有50个滴答声。话虽如此,您也可以使用Lerp方法在两点之间进行平滑变换。
transform.position = Vector2.Lerp(starting_vector, target_vector, Time.deltaTime);
答案 1 :(得分:0)
更好的方法是使用transform.Translate(<vector>)
这更容易使用,我认为更有效。
所以你会有这样的事情transform.Translate(new Vector3(move,0,0));