道具
1.添加道具钻石Gem,制作动画
新建动画Gem_Pickup,保存在Animations文件夹下
制作帧动画
添加碰撞检测Circle Collider 2D,设置Trigger
2.添加道具Cherry,命名为HealthPickup,制作动画
添加碰撞检测Circle Collider 2D,设置Trigger
新建动画
3.添加脚本Pickup
添加组件到Gem,HealthPickup
添加参数
public bool isGem; //钻石
public bool isHeal; //樱桃,加生命
private bool isCollected; //是否收集到
分别勾选Gem,HealthPickup的值isGem和isHeal
添加碰撞检测函数
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player") && !isCollected)
{
if (isGem)
{
//更新钻石数量
LevelManager.sInstance.gemCollected++;
isCollected = true;
Destroy(gameObject); //获取钻石后销毁
}
if (isHeal)
{
if (PlayerHealthController.sInstance.currentHealth != PlayerHealthController.sInstance.maxHealth)
{
//刷新生命值,并销毁樱桃
PlayerHealthController.sInstance.HealPlayer();
isCollected = true;
Destroy(gameObject);
}
}
}
}
4.界面钻石显示
在UICanvas中添加Image,命名为Gem,标识钻石
添加Text命名为TextGem,设置靠右对齐,指定字体,并设置字体颜色为白色
添加Outline组件,设置黑色轮廓
5.同步UI界面
在UIController中,添加刷新钻石数函数,在Start()中初始化
void Start()
{
UpdateGemCount();
}
//刷新钻石数
public void UpdateGemCount()
{
gemText.text = LevelManager.sInstance.gemCollected.ToString();
}
在Pickup中,碰撞检测里判断isGem后,调用UIController中的刷新钻石函数
//刷新界面钻石数
UIController.sInstance.UpdateGemCount();
6.道具消失动画
新建节点PickupEffect
在PickupEffect上添加动画Pickup_Effect
制作帧动画
在20帧时,点record按钮开始录制,去掉SpriteRender的勾,再点record停止录制
7.新建脚本DestroyOverTime,绑定到PickupEffect节点
添加参数:lifeTime
public float lifeTime; //特效生命时间
void Update()
{
Destroy(gameObject, lifeTime);
}
设置默认值为0.5
8.制作特效预制体
在Prefabs文件夹下,新建文件夹Effects,用于保存特效
拖动PickupEffect到Effects文件夹,并删除PickupEffect节点
9.道具中添加特效
在Pickup中添加参数
public GameObject pickupEffect; //道具消失特效
在碰撞检测函数里,分别在判断isGem和isHeal中,销毁对象后添加特效
//在指定位置添加特效
Instantiate(pickupEffect, transform.position, transform.rotation);
分别制定道具中pickupEffect对象为制定的预制体特效
10.添加排序层级
添加三个排序层
设置Gem和HealthPickup排序层为Pickups
设置Checkpoint排序层为World,并Overrides
11.制作Pickups预制体
在Prefabs文件夹下,新建Pickups文件夹,保存pickup预制体
[外链图片转存中…(img-PZtmmd1D-1721963537176)]
设置Checkpoint排序层为World,并Overrides
[外链图片转存中…(img-aymDirnl-1721963537176)]
11.制作Pickups预制体
在Prefabs文件夹下,新建Pickups文件夹,保存pickup预制体
将Gem和HealthPickup拖入到Pickups文件夹下