gpt4 book ai didi

c# - 随时间移动游戏对象

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:41 30 4
gpt4 key购买 nike

我正在从 Swift SpriteKit 背景中学习 Unity,其中移动 Sprite 的 x 位置与运行 Action 一样直接,如下所示:

let moveLeft = SKAction.moveToX(self.frame.width/5, duration: 1.0)
let delayAction = SKAction.waitForDuration(1.0)
let handSequence = SKAction.sequence([delayAction, moveLeft])
sprite.runAction(handSequence)

我想知道一种等效或类似的方法,可以将 Sprite 移动到特定位置并持续特定持续时间(例如,一秒钟),并且不必在更新函数中调用延迟。

最佳答案

gjttt1 的答案很接近,但缺少重要功能,并且使用 WaitForSeconds() 移动 GameObject 是 Not Acceptable 。您应该结合使用 LerpCoroutineTime.deltaTime。您必须了解这些内容才能在 Unity 中通过脚本制作动画。

public GameObject objectectA;
public GameObject objectectB;

void Start()
{
StartCoroutine(moveToX(objectectA.transform, objectectB.transform.position, 1.0f));
}


bool isMoving = false;

IEnumerator moveToX(Transform fromPosition, Vector3 toPosition, float duration)
{
//Make sure there is only one instance of this function running
if (isMoving)
{
yield break; ///exit if this is still running
}
isMoving = true;

float counter = 0;

//Get the current position of the object to be moved
Vector3 startPos = fromPosition.position;

while (counter < duration)
{
counter += Time.deltaTime;
fromPosition.position = Vector3.Lerp(startPos, toPosition, counter / duration);
yield return null;
}

isMoving = false;
}

类似问题:SKAction.scaleXTo

关于c# - 随时间移动游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138764/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com