gpt4 book ai didi

c# - 移动游戏对象的最佳方式是什么,而不是传送它?

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

我试图将游戏对象 pokemon 从屏幕中心平滑地移动到屏幕左侧(仅沿水平轴)。但是,它会立即传送。

代码的作用 = 在无限循环中从一个 sprite 变为另一个 sprite。当它变成另一个 Sprite 时,它也会改变它的比例。

我想要代码做什么 = 在更改为不同的 Sprite 之前,在水平轴上向左移动。

我尝试过线性插值 (lerp) 和 transform.translate。

public class Transitions : MonoBehaviour
{

public Sprite Pokemon_0; // VARIABLES FOR SPRITES (Pokemons/ game objects)
public Sprite Pokemon_1;

float timer = 1f; // CHANGING SPRITES VALUES (delays)
float delay = 5f;

Vector2 temp; //CHANGING POSITION VARIABLES
Vector2 tempPos;
Vector2 finalPosition;


void Start()
{
this.gameObject.GetComponent<SpriteRenderer>().sprite = Pokemon_0;
}

void Update()
{
timer -= Time.deltaTime;
if (timer <= 0)
{
if (this.gameObject.GetComponent<SpriteRenderer>().sprite == Pokemon_0) // TO CHANGE FROM POKEMON 1 TO POKEMON 2
{
this.gameObject.GetComponent<SpriteRenderer>().sprite = Pokemon_1;

temp = transform.localScale; // TO SET THE SCALE WHEN EACH POKEMON CHANGES (works)
temp.x = -380;
temp.y = 350;
transform.localScale = temp;
timer = delay;

finalPosition = new Vector2(167, -107);
transform.position = Vector3.Lerp(transform.position, finalPosition, 1f * Time.deltaTime);

//tempPos = transform.position; // Tried and tested method. Doesn't work.
//tempPos.x = 1f;
//transform.position = tempPos;



return;

}
if (this.gameObject.GetComponent<SpriteRenderer>().sprite == Pokemon_1) // TO CHANGE BACK FROM POKEMON 2 TO POKEMON 1
{
this.gameObject.GetComponent<SpriteRenderer>().sprite = Pokemon_0;
timer = delay;
return;

}

}

在执行时,这段代码确实改变了 pokemon 并改变了规模。但是,立场保持不变。

我是新人,所以我一直在尝试我们的不同建议,谢谢。

最佳答案

最好使用补间引擎,例如http://dotween.demigiant.com/ .

如果你安装了 Dotween 那么你可以简单地使用

transform.DOMove(new vector3(1 ,0 , 1) , duration);

您还可以为补间设置缓动。或使用 Oncomplete 函数;

transform.DOMove(new vector3(1 ,0 , 1) , duration)
.SetEase(Ease.OutCubic)
.OnCompelete(() => { shouldClose = true; });

您还可以为您的补间设置循环 .SetLoops(-1)

关于c# - 移动游戏对象的最佳方式是什么,而不是传送它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56836806/

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