gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:30:11 26 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() 的使用搬家游戏对象 是 Not Acceptable 。您应该使用 Lerp 的组合, CoroutineTime.deltaTime .您必须了解这些内容才能在 Unity 中使用 Script 制作动画。

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/62352088/

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