繁体   English   中英

如何根据Unity中NGUI Slider的值移动transform.y?

[英]How to move transform.y according to NGUI Slider value in Unity?

我正在制作一个游戏,必须用叉车捡起一些物体,我编写此代码来执行此操作,但无法正常工作。 拾取物体后未达到所需的位置...

public UISlider Slider;
public GameObject Lifter;
public float temp;


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    temp = Slider.GetComponent<UISlider> ().value;
    if (Slider.GetComponent<UISlider> ().value == 0) {
        Lifter.transform.position = new Vector3 (Lifter.transform.position.x, transform.position.y + temp - 1.2f, Lifter.transform.position.z);
    } 
    else 
    {
        Lifter.transform.position = new Vector3 (Lifter.transform.position.x, 0.39, Lifter.transform.position.z);
    }
}

仅当滑块值为0(不正确)时才使用滑块值。 尝试使用此代码-

public Slider MySlider;
public GameObject Lifter;
public float temp;

private float LifterInitialY = 0f;

// Use this for initialization
void Start () {
    LifterInitialY = Lifter.transform.position.y;
}

// Update is called once per frame
void Update () {
    Lifter.transform.position = new Vector3 (Lifter.transform.position.x, LifterInitialY + MySlider.value , Lifter.transform.position.z);
}

编辑:当滑块值变为1时,将前叉向上(Y轴)移动-

添加测量值变量-

...
private float LifterInitialY = 0f;
private float someMeasuredValue = 0f;
...

并在Update方法中添加对滑块值的检查-

void Update () {
    if(MySlider.value >= 1f){
        someMeasuredValue = 1.2f; // measure some value
    }else{
        someMeasuredValue = 0f;
    }
    Lifter.transform.position = new Vector3 (Lifter.transform.position.x, LifterInitialY + MySlider.value + someMeasuredValue , Lifter.transform.position.z);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM