我正在制作一個 2D 游戲,我希望我的玩家在基于輸入鍵左右移動時切換玩家精靈的一側。
到目前為止,我處理它的方式是通過改變 X 軸上的區域比例,如下所示:
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
transform.localScale = new Vector3(-1, 1, 1);
}
else if(Input.GetKeyDown(KeyCode.D))
{
transform.localScale = new Vector3(1, 1, 1);
}
}
默認設定是玩家面向右側,但是當他按下 A 按鈕時,玩家將看向左側,當他按下 D 時,它會回到右側。
到目前為止一切都很好,但是當我試圖增加玩家的體型時,當他收集能量時,一切都搞砸了。
為了增加我使用的 DOTween 包的大小,它提供了一種簡單的方法來放大這樣的物件:
transform.DOScale(new Vector3(2, 2, 2),1.5f);
在那之后,我意識到弄亂規模可能會變得非常混亂。我的問題是有沒有更好的方法來處理精靈側開關?
uj5u.com熱心網友回復:
實際上,這是一個簡單的解決方案。
我想您正在為您的播放器使用Sprite Renderer組件。在這個組件上,有一個選項Flip用于在 2 軸 (X,Y) 上翻轉你的精靈。您可以使用 X 軸來左右翻轉您的惡意。
只需在上面的腳本中創建組件的參考,Sprite Renderer然后使用該flip屬性來更改您的 sprite 端。
這是一個例子:
private SpriteRenderer spriteRenderer;
void Start()
{
spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
spriteRenderer.flipX = true;
}
else if(Input.GetKeyDown(KeyCode.D))
{
spriteRenderer.flipX = false;
}
}
現在你可以使用你的DOTween來擴展你的播放器。
uj5u.com熱心網友回復:
為什么不這樣做:
Vector3 localScale;
private boolIsFacingRight = true;
void Update()
{
localScale = transform.localScale;
if (Input.GetKeyDown(KeyCode.A))
{
localScale.x *= isFacingRight ? 1 : -1;
isFacingRight = true;
transform.localScale = localScale;
}
else if(Input.GetKeyDown(KeyCode.D))
{
localScale.x *= isFacingRight ? -1 : 1;
isFacingRight = false;
transform.localScale = localScale;
}
}
這樣,您只需在單個軸上翻轉角色,并且每次都保持縮放而不是將其設定為新向量 3。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/531758.html
