我该如何让gameObject在一开始快速跳跃,然后在一段时间后开始减速?这段代码不像它应该的那样工作
本文关键字:段代码 代码 工作 开始 一开始 gameObject 跳跃 一段时间 然后 | 更新日期: 2023-09-27 18:09:26
我如何让游戏对象一开始跳得很快,然后在一段时间后开始减速?这段代码不像它应该的那样工作。这正是我想要的:当游戏开始时,gameObject播放一个空闲动画,然后当用户按下他们的手指时"蹲下"(蹲下是我制作的动画),当他们松开手指时"跳跃"(一开始是快速的,然后在一段时间后减速,就像月球上的重力一样)。这是所有!为了让你更好地理解,让我们以《过马路》中的主角为例:当用户按下按键时,小鸡"蹲下",当用户松开手指时,小鸡跳起来。相同的概念,但跳跃将不同。
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);
}
}
}
添加一个类型为float (private)的变量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;
}
}
把你的Update函数改成这样