首先先进行游戏地图、卡牌、阳光等基本功能的完成。
首先选择草地图片为基本图层,然后在上面创建image放置植物卡槽,主要为对图形显示的调整,添加图片和阳光数值,达到下图效果,然后就行对阳光的相关代码编写。
阳光的主要逻辑是设置随机阳光从天空中初始化的方法以及下落目标点,鼠标点击阳光时增加游戏管理器中阳光数量,并且销毁阳光自身,在实现过程中需要增加飞行动画和鼠标点击或超时后自动销毁的代码。
//鼠标点击阳光
private void OnMouseDown()
{
PlayerManager.Instance.SunNum += 25;
Vector3 sunNum = Camera.main.ScreenToWorldPoint(UIManager.Instance.GetSunNumTextPos());
sunNum = new Vector3(sunNum.x, sunNum.y, 0);
FlyAnimation(sunNum);
AudioManager.Instance.PlayEFAudio(GameManager.Instance.GameConf.SunClick);
}
//阳光从天空初始化
public void InitForSky(float downTargetPosY, float creatPosX, float CreatPosY)
{
this.downTargetPosY = downTargetPosY;
transform.position = new Vector2(creatPosX, CreatPosY);
isFormSky = true;
}
//阳光飞行
private void FlyAnimation(Vector3 pos)
{
StartCoroutine(DoFly(pos));
}
private IEnumerator DoFly(Vector3 pos)
{
Vector3 direction = (pos - transform.position).normalized;
while (Vector3.Distance(pos,transform.position)>0.5f)
{
yield return new WaitForSeconds(0.01f);
transform.Translate(direction);
}
DestroySun();
}
//阳光销毁
private void DestroySun()
{
// 取消自身全部携程和延迟调用
StopAllCoroutines();
CancelInvoke();
// 放进缓存池 不做真实销毁
PoolManager.Instance.PushObj(GameManager.Instance.GameConf.Sun, gameObject);
}
本次则完成了对游戏展示画面的基本设置以及来自天空阳光逻辑的完成。