项目实训(四)

本篇介绍向日葵的相关功能逻辑的实现,向日葵的功能为间隔一段时间产生一定值的阳光,该阳光不会在场景中飘动而是固定在向日葵上,用户点击进行收取或者间隔一段时间阳光消失。

主要函数为创建阳光和让阳光跳跃动画

 /// <summary>
    /// 创建阳光
    /// </summary>
    private void CreateSun()
    {
        //StartCoroutine(DoCreatSun());
        StartCoroutine(ColorEF(goldWantTime, new Color(1, 0.6f, 0),0.05F, InstantiateSun));
    }

    private void InstantiateSun()
    {
        Sun sun = PoolManager.Instance.GetObj(GameManager.Instance.GameConf.Sun).GetComponent<Sun>();
        sun.transform.SetParent(transform);
        // 让阳光进行跳跃动画
        sun.InitForSunFlower(transform.position);
    }

然后进行对创建阳光的实现

protected override void OnInitForPlace()
    {
        InvokeRepeating("CreateSun", createSunTime, createSunTime);
    }

同时需要在阳光代码中进行对太阳花的阳光的初始化

/// <summary>
    /// 阳光来自太阳花的初始化
    /// </summary>
    public void InitForSunFlower(Vector2 pos)
    {
        transform.position = pos;
        //肯定来太阳花
        isFormSky = false;
        StartCoroutine(DoJump());
    }
    private IEnumerator DoJump()
    {
        bool isLeft = Random.Range(0, 2)==0;
        Vector3 startPos = transform.position;
        float x;
        if (isLeft)
        {
            x = -0.01f;
        }
        else
        {
            x = 0.01f;
        }
        float speed = 0;
        while (transform.position.y <= startPos.y + 1)
        {
            yield return new WaitForSeconds(0.005f);
            speed += 0.002f;
            transform.Translate(new Vector3(x, 0.05f+ speed, 0));
        }
        while (transform.position.y >= startPos.y)
        {
            yield return new WaitForSeconds(0.005f);
            speed += 0.002f;
            transform.Translate(new Vector3(x, -0.05f-speed, 0));
        }
    }

销毁与收取的方法则与来自太空的阳光方法相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值