Unity2D开发学习笔记(二)

获取输入

先写一个playerInput2D类来获取玩家得输入,对于用户的输入可以分为两种类型的信号,
一是持久性的信号例如移动等长按型的信号,还有种是像攻击,跳跃这种瞬间型的信号。

public float horizon;//因为是2d游戏所以,通过这个浮点数的正负来决定角色的水平速度
public bool isattack;//按了攻击 瞬间信号
public bool isjump;//按了跳跃 瞬间信号

public KeyCode attack;//把相应键为公开出来以便unity调试可修改
public KeyCode jump;

在update函数里去检测用户的输入,在这里使用的是GetAixsRaw它较于GetAixs不同的是,通过这个方法获取到的水平轴向信息输入(按了a d或者方向键盘的左右的话,会返回值,否则为0,另外如果两个键一起按 也是0)只有+1 -1,而GetAixs则能给输入信息进行插值过渡处理,会从0,到0.1到…到1,能使输入更加平滑。个人认为2d游戏不需要这种效果所以选择了raw。

 void Update()
    {
        horizon = Input.GetAxisRaw("Horizontal");//horizontal为水平输入信息,Vertical为垂直方向信息
        if (Input.GetKeyDown(attack)) { isattack = true; }
        if (Input.GetKeyDown(jump)){ isjump = true;}
    }

在这里我对攻击 跳跃信息的处理是,按了对应按键就把信号值设置为true,然后在另外一个脚本里去检测这个脚本里的这些信号,如果为true则执行相应的函数,并把它设置为false,以便接受下次信号。
之所以这么处理,

  • 是功能单一原则
  • 是如果直接在输入脚本的update里去把信号值设为true然后再设置为false,我担心今后的开发过程中代码很多,代码执行顺序不清晰,可能会导致获取不到用户的信号输入。

控制角色移动

UNITY2D游戏中有两种控制移动的方法

  • 通过直接修改玩家角色的transform组件里的translate方法来控制玩家的移动。
  • 赋予玩家角色刚体(Rigbody2D)组件,再去修改刚体组件的速度属性,来达到移动。

建议使用第二种方法来控制玩家移动,因为在之后的开发中有很多交互依赖于刚体组件,所以就算移动不加刚体组件后面也还要加上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值