目录
15、太阳功能优化和完善
修复:植物拖拽到网格外能够种植的问题
解决:只要鼠标位置与网格位置小于1.5时才能够触发点击的判断,就可以解决了
补充:植物种植后可以冷却
补充:拖拽时右键取消
改进:阳光动画优化(上升下降不是匀速态)
改进:太阳花出花时变红(伪特效)
在SunFlower.cs中更新代码
……
public class SunFlower : MonoBehaviour
{
……
// 太阳花变红时所需要的时间
private float goldWantTime = 1.5f;
……
// 查找自身相关组件
private void Find()
{
……
}
// 创建时的初始化
public void InitForCreate(bool inGrid)
{
……
}
// 放置植物的初始化
public void InitForPlace()
{
……
}
// 创建阳光
private void CreateSun()
{
StartCoroutine(DoCreateSun());
}
IEnumerator DoCreateSun()
{
float currTime = 0;
currTime += 0.05f;
float lerp;
while (currTime < goldWantTime)
{
yield return new WaitForSeconds(0.05f);
lerp = currTime / goldWantTime;
currTime += 0.05f;
// 实现一个从白到红的插值计算,lerp为0就是白色(原色),如果为1就是Color(1,0.6f,0)
spriteRenderer.color = Color.Lerp(Color.white, new Color(1,0.6f,0),lerp);
}
// 恢复原来的附加色(白色)
spriteRenderer.color = Color.white;
// 父物体选择自身
Sun sun = Instantiate(GameManager.instance.GameConf.Sun, transform.position, Quaternion.identity,
transform).GetComponent<Sun>();
// 生成阳光后跳跃
sun.JumpAnimation();
}
}