https://www.bilibili.com/video/BV1PJ411w7KT?p=2
part1:将所有与idle相关的语句都可以注释掉,因为默认执行的
animator的条件和transition内的idle都可以删除
part2:
将Jump从Movement独立出来成为一个函数,每次按跳跃前需要重置Y轴速度
rb.velocity=new vector2(rb.velocity.x, 0);
然后Jump和Crouch放到void Update();中,Movement在void FixedUpdate();中
part3:
这里用于:Enemy被JumpOn时隐藏collider,以免二次碰撞
当组件只被调用一次可以不进行实例的生成,用一下语句:
GetComponent<collider2D>().enabled = true;
part4:
给cherry添加一个isColl的动画,用于被收集时显示
然后定义一个函数isColl用于记录樱桃数量的增加,放在isColl动画播放后的Event内
在播放动画后再计数可以有效解决一个樱桃多次计数的问题
这里扩展一个不用class调用其他脚本函数的方法
在PlayerController新建一个CherryCount()函数
public void CherryCount()
{
Cherry+=1;
}
写一个Cherry脚本,里面记录樱桃被吃后Death的事件
public class Cherry : MonoBehaviour
{
public void Death()
{
FindObjectOfType<PlayerController>().CherryCount();
//在系统中找到playerController这个脚本,然后调用脚本内的函数CherryCount()
Destroy(gameObject);
}
FindObjectOfType<PlayerController>().CherryCount();但是貌似低效有延迟