一.左右移动
1.对刚体的运动的处理通常都用fixedupdate来处理,这样可以以恒定的时间间隔执行。
在fixedupdate中执行move函数,由于move需要刚体组件中的参数,需要加入刚体参数。
2.加入刚体参数方法:
法一,不需要等待游戏执行或者编辑器执行就可以获取刚体组件的使用权,当需要在所有代码执行之前引入这些刚体参数时
在人物中写入刚体变量Rb,回到inspector中通过拖拽将刚体组件中的参数引入
法二,通过awake方法去获得刚体中变量
通过GetComponent获得自身的刚体参数
private Rigidbody2D rb;
private void Awake()
{
inputControl = new PlayerInputControl();
rb = GetComponent<Rigidbody2D>();
}
——————-——————
3.有了rigidbody的数值,就可以更改rigidbody的速度
//定时刷新刚体的移动
private void FixedUpdate()
{
Move();
}
//刚体速度的更改
public void Move()
{
//用一个速度来替换当前的速度:x的速度为输入的方向*速度*时间的修正,需要设置x,y两个方向的float值,
//y值为维持原来物理引擎的9.8的加速度的速度
rb.velocity = new Vector2(inputDirection.x * speed * Time.deltaTime,rb.velocity.y);
}
二.翻转
法一.(传统 )
对人物的翻转,可以通过自身数值的transform中的scale(从-1转变为1)
transform组件不需要get可以直接拿来用
public void Move()
{
//用一个速度来替换当前的速度:x的速度为输入的方向*速度*时间的修正,需要设置x,y两个方向的float值,
//y值为维持原来物理引擎的9.8的加速度的速度
rb.velocity = new Vector2(inputDirection.x * speed * Time.deltaTime,rb.velocity.y);
//人物翻转 用transform实现,由于存在用手柄时候inputdirection.x出现小数的情况,故判断方向使用是否大于零
//创建临时变量记录当前方向,此时x为float,用int强制转换
int faceDir = (int)transform.localScale.x;
//判断输入方向,更改facedir
if (inputDirection.x>0)
faceDir = 1;
if (inputDirection.x < 0)
faceDir = -1;
transform.localScale = new Vector3(faceDir,1,1);
}
法二.
对精灵图渲染器中的flip更改直接实现沿着锚点翻转(x或y)