跟着麦扣老师做的小狐狸demo
Input.GetAxis
GetAxis()两种:
Vertical:获得垂直方向
Horizontal:获得水平方向
horizontalmove = Input.GetAxis("Horizontal");//检测水平方向键
verticalmove = Input.GetAxis("Vertical"); //检测垂直方向键

👆Edit->Project Settings->Input Manager->Axes->Horizontal
从上图可知Negative Button -1对应left和a;Positive Button对应1和right
所以在程序中分别设置两个变量接收-1或者1来判断是按了a left还是d right
Input.GetAxisRaw
~ vs Input.GetAxis👇
前者获得的数据只有-1 0 1
后者获得的数据是-1~0 0~1
Time.deltaTime


Mathf.Abs()
取绝对值
transform&Transform
- Transform做函数
- transform才是当前真正需要操作的
镜头设置的两种方法
1.在Main Camera中加new script
👇Script代码
public class CameraControl : MonoBehaviour
{
//①设置一个叫"player"的Transform类型的变量
public Transform player;
// Update is called once per frame
void Update()
{
//②把Main Camera中的transform栏目中的position改为一个实例,该实例是3D的,xyz各自对应
transform.position = new Vector3(player.position.x, 0, -10f);
}
}
👇最后把要给镜头的对象移动到Player处即可

2.cinimachine
GameObject->Cinimachine->2D Cinima->得到下图所示的选项


Follow处拉拽上需要跟踪镜头的对象
然后在Lens处调整镜头距离等参数

Dead Zone
- 可以拉拽范围,如果超出范围则镜头移动,未超出则不移动
不离开背景图
- CM vcam1->Body->Add Extension->Cinimachine Confiner->

- 回到Background图层拉拽范围
虚函数与类的使用
父级
public class Enemy : MonoBehaviour
{
protected Animator Anim;
//👆所有Enemy都需要有“被击杀”的动画,因此先创建一个名为"Anim"的Animator变量
//"protected"→1.1
protected virtual void Start()
//"virtual"父级的"Start"是可以被子级重新编写的(因为子级在"Start"中有一些本体的属性)
{
Anim = GetComponent<Animator>();
}
public void Death()
{
Destroy(gameObject);
}
public void JumpOn()
{
Anim.SetTrigger("death");
}
}
子级
public class Enemy_Frog : Enemy//隶属于Enemy的子级,确定父子关系
{
protected override void Start()
//👆override 呼应virtual
{
base.Start();//调用父级的Start
}
}
Player
Enemy enemy = collision.gameObject.GetComponent<Enemy>();//可以调用名为"Enemy"的类的父子级
1.1protected
自身类和派生类可以访问相当于自身的private型成员
创建的函数或者变量在子父级中都可以使用可以被
1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问使用protected继承,父类的protected和public属性在子类中变为protected
场景转换
从第一关进入第二关
using UnityEngine.SceneManagement;
//.
//.
if(Input.GetKeyDown(KeyCode.E))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().bulidIndex + 1);
}