代码之家  ›  专栏  ›  技术社区  ›  Ninja2k

Unity如何允许对象仅使用坐标在特定边界内移动

  •  0
  • Ninja2k  · 技术社区  · 7 年前

    我想为立方体编写脚本,使其只能在x轴上从0到5移动。 我的立方体从零开始。我希望我的立方体向前移动直到达到5,然后停止并向后移动直到达到0,然后重复。

        //Drags cube along the ground
        if (transform.position.x > 0 & transform.position.x < 5) {
            transform.Translate(1* Time.deltaTime, 0, 0);
        }
    
    //If our cubes reaches our boundary, move it backwards
    if (transform.position.x >= 5 || transform.position.x <= 0 ) {
        transform.Translate(-1, 0, 0);
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Ruzihm aks786    7 年前

    使用 Mathf.PingPong 摇摆 0f 和 5f 基于当前时间。

    float speed = 1f;
    float curXPosition = Mathf.PingPong(speed * Time.time, 5f);
    transform.position = new Vector3(curXPosition,transform.position.y,transform.position.z);
    

    如果需要在特定时间从0开始:

    // as class field
    public float zeroTime=0f;
    public float speed;
    
    // When you want it to start from zero, call this line:
    this.zeroTime = Time.time; 
    
    // in Update/FixedUpdate
    float curXPosition = Mathf.PingPong(speed * (Time.time-zeroTime), 5f);
    transform.position = new Vector3(curXPosition,transform.position.y,transform.position.z);