在X轴上的两点之间移动对象

时间:2014-03-18 23:02:43

标签: c# loops for-loop unity3d

我尝试编写使对象移动到点的代码让我们假设 (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);
        }
    }
}

2 个答案:

答案 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));