0

我怎样才能让一个游戏对象一开始快速跳跃,然后在一段时间后开始减速?这段代码不像它应该的那样工作。这正是我想要的:当游戏开始时,gameObject 播放一个空闲动画,然后当用户按下手指时“蹲下”(蹲下是我制作的动画)和跳跃(起初很快,然后过一会儿慢下来,比方说,就像月球上的重力一样)当他们松开手指时。就这样!为了让大家看得更清楚,我们以《穿越之路》中的主角为例:当用户按下时,小鸡“蹲”,当用户松开手指时,小鸡跳跃。相同的概念,但 Jump 会有所不同。

public float startSpeed;
public float slowAmount;
float actualSpeed;
bool isJumping;

void Awake()
{
    gameObject.GetComponent<Animation>()["Idle"].wrapMode=WrapMode.Loop;
    gameObject.GetComponent<Animation>() ["TouchDown"].wrapMode = WrapMode.Once;
}

void Start()
{
    GetComponent<Animation>().Play("Idle");
}

void Update()
{
    if (Input.touchCount > 0) 
    {
        if (Input.GetTouch (0).phase == TouchPhase.Began) 
        {
            GetComponent<Animation> ().Play ("TouchDown");
        }
        if (Input.GetTouch (0).phase == TouchPhase.Ended) 
        {
            actualSpeed = startSpeed;
            isJumping = true;
        }
        if (isJumping) 
        {
            actualSpeed -= slowAmount * Time.deltaTime;
            transform.position += new Vector3 (0.5f, actualSpeed * Time.deltaTime, 0);
        } 

    }
}
4

1 回答 1

0

添加另一个名为 startY 的浮点类型(私有)变量。

void Update(){
    if (Input.touchCount > 0) {
        if (Input.GetTouch (0).phase == TouchPhase.Began) 
            GetComponent<Animation> ().Play ("TouchDown");
        if (Input.GetTouch (0).phase == TouchPhase.Ended){
            actualSpeed = startSpeed;
            isJumping = true;
            startY = transform.position.y;
        }
    }
    if (isJumping) {
        actualSpeed -= slowAmount * Time.deltaTime;
        transform.position += new Vector3 (0, actualSpeed * Time.deltaTime, 0);
        if(startY > transform.position.y) isJumping = false;
    } 
}

并将您的更新功能更改为此。

于 2015-08-24T13:00:32.987 回答