Swift 在单位时间内,相当于SKAction scaleToX

Swift 在单位时间内,相当于SKAction scaleToX,swift,unity3d,unity5,skaction,Swift,Unity3d,Unity5,Skaction,我试图在一个统一的给定时间内缩放一个精灵的x轴。基本上,在使用Swift之前,我是这样做的: let increaseSpriteXAction = SKAction.scaleXTo(self.size.width/(mySprite?.sprite.size.width)!, duration:0.2) mySprite!.sprite.runAction(increaseSpriteXAction) mySprite!.sprite.physicsBody = SKPhysicsBody(

我试图在一个统一的给定时间内缩放一个精灵的x轴。基本上,在使用Swift之前,我是这样做的:

let increaseSpriteXAction = SKAction.scaleXTo(self.size.width/(mySprite?.sprite.size.width)!, duration:0.2)
mySprite!.sprite.runAction(increaseSpriteXAction)
mySprite!.sprite.physicsBody = SKPhysicsBody(rectangleOfSize:mySprite!.sprite.size, center: centerPoint)

但在Unity中甚至还没有找到与scaleToX等价的东西。我真的很感谢你的帮助

使用组合
Coroutine
Time.deltaTime
Mathf.Lerp
则pyou将能够复制
SKAction.scaleXTo
函数的功能

bool isScaling = false;

IEnumerator scaleToX(SpriteRenderer spriteToScale, float newXValue, float byTime)
{
    if (isScaling)
    {
        yield break;
    }
    isScaling = true;

    float counter = 0;
    float currentX = spriteToScale.transform.localScale.x;
    float yAxis = spriteToScale.transform.localScale.y;
    float ZAxis = spriteToScale.transform.localScale.z;

    Debug.Log(currentX);
    while (counter < byTime)
    {
        counter += Time.deltaTime;
        Vector3 tempVector = new Vector3(currentX, yAxis, ZAxis);
        tempVector.x = Mathf.Lerp(currentX, newXValue, counter / byTime);
        spriteToScale.transform.localScale = tempVector;
        yield return null;
    }

    isScaling = false;
}
它将在3秒内将x轴刻度从原来的数值更改为5。同样的功能也可以轻松扩展到y轴


类似的问题:。

我也在尝试做类似于()使用统一,但我不太确定如何确定增加X的比例,以填充整个width@NSSwiftscreenWidth/spriteWidth是将精灵宽度增加到屏幕所需的比例width@Programmer我对C#知道的不多,但如果NSSwift用我的评论实现了你的解决方案,精灵将从如果它不在屏幕中央,则显示屏幕。你将需要做一些形式的锚定点改变,以保持整个缩放的精灵在屏幕上,而不管它的位置如何。“我相信这就是NSSwift想要达到的目标。”这个问题是由humfrey提出的,而不是NSSwift提出的。最初的问题是将X的大小重新调整为一个新值,这个答案就是这样做的。他需要问一个新问题,他问了。我还在想办法帮他做那件事。
public SpriteRenderer sprite;
void Start()
{
    StartCoroutine(scaleToX(sprite, 5f, 3f));
}