5-11 Play Scale Animation When Getting Item
今天要介紹大家一個簡單的功能,就是當玩家獲取物品時,背包內的Item會有簡單的縮放動畫,這個設計是讓玩家能較清楚的看出取得物品的變化。
如下圖,剛取得物品的時候會較大。
然後物品會再慢慢縮減到正常大小。
這個功能不難,我們主要修改ItemUI.cs:
然後,大家可以修改InventorySystem.cs,在Update中增加GetKeyDown事件,按下G鍵的時候會隨機產生一個物體,能夠方便大家觀察動畫的模樣。
如下圖,剛取得物品的時候會較大。
然後物品會再慢慢縮減到正常大小。
這個功能不難,我們主要修改ItemUI.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace RPG.Inventory{
public class ItemUI : MonoBehaviour{
public Item Item { get; set; }
public int Amount { get; set; }
[SerializeField] float smoothScaleMultiplier = 4f;
float targetScale = 1f;
Vector3 initialScale = new Vector3(1.4f, 1.4f, 1.4f);
void Update(){
// 獲取物品動畫
if (transform.localScale.x != targetScale) {
float scale = Mathf.Lerp (transform.localScale.x, targetScale, smoothScaleMultiplier*Time.deltaTime);
transform.localScale = new Vector3 (scale, scale, scale);
if (Mathf.Abs (transform.localScale.x - targetScale) < 0.01f) {
transform.localScale = new Vector3 (targetScale, targetScale, targetScale);
}
}
}
public void SetItem(Item item, int amount = 1){
transform.localScale = initialScale; // 獲取物品動畫的初始Scale
this.Item = item;
this.Amount = amount;
GetComponentInChildren ().sprite = Resources.Load (item.Sprite);
GetComponentInChildren ().text = Amount.ToString();
}
public void AddAmount(int amount = 1){
transform.localScale = initialScale; // 獲取物品動畫的初始Scale
this.Amount += amount;
GetComponentInChildren ().text = Amount.ToString();
}
public void SetAmount(int amount){
transform.localScale = initialScale; // 獲取物品動畫的初始Scale
this.Amount = amount;
GetComponentInChildren ().text = Amount.ToString();
}
public void Show(){
gameObject.SetActive (true);
}
public void Hide(){
gameObject.SetActive (false);
}
public void SetLocalPosition(Vector3 localPosition){
transform.localPosition = localPosition;
}
}
}
然後,大家可以修改InventorySystem.cs,在Update中增加GetKeyDown事件,按下G鍵的時候會隨機產生一個物體,能夠方便大家觀察動畫的模樣。



留言
張貼留言