Swift 在单位时间内,相当于SKAction scaleToX
我试图在一个统一的给定时间内缩放一个精灵的x轴。基本上,在使用Swift之前,我是这样做的: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(
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));
}