unity平台游戏日志第一天

实现内容:人物角色左右移动

一、导入素材

素材来源:

1.2D Platfrom Tile Set - Cave | 2D Environments | Unity Asset Store

2.Hero Knight - Pixel Art | 2D Characters | Unity Asset Store

3.Evil Wizard 3 | 2D Characters | Unity Asset Store

在My Assets处导入

添加即可

二、构建一个平台使得角色能够站立(利用tilemap)

打开Tile Palettee面板

window—>2D—>Tile Palettee

创建一个Ground平台

先create一个ground

再在画板调制好Ground所需的素材:

将左侧部分直接拖入

这里修改像素值:使得刚好占一个格子即可

在这里创建开始绘画地图平台:命名为Ground

在右侧选中素材进行绘制:

绘制完成后给其添加组块:

Rigidbody 2D中的body type 设置为如图所示

这里可以调周围的轮廓线使得更加紧凑:

一个站立的地方有了 下面将人物给弄进来

三、添加人物

将任意一张图片拖到左边即可

同样给人物添加刚体 碰撞体

注意将z坐标冻结因为我们是2D游戏

四、通过代码实现人物的左右移动

1、先添加一个组块 input system 在导入素材的地方导入这个组块

2.再project ->create->input actions绑定按键操作

3.在这里进行绑定按键操作

先在Action Maps中创建Game,将右侧Action Properties设置成如图所示

中间Action选择Add Up\Down\Left\Right Composite然后绑定两套按键

右边path可以选择绑定哪个按键

可以先点listen然后按键按下即可识别 用鼠标点击确认

4.下面创建脚本进行人物左右移动

将脚本先拖进人物中

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;//引入检测输入系统的命名空间

变量申明

   public PlayerInputActions ia;
   public Vector2 moveDirection;
   public Rigidbody2D rb;
   private SpriteRenderer sr;
   public float moveSpeed = 5f;

   private Animator anim;

从unity组件中获取

 private void Awake()
 {
     ia = new PlayerInputActions();

     rb = GetComponent<Rigidbody2D>();

     sr = GetComponent<SpriteRenderer>();

     anim = GetComponent<Animator>();

 }

加上这两个 虽然我也不知道为什么

    private void OnEnable()
    { 
        ia.Enable();
    }

    private void OnDisable()
    {
        ia.Disable();
    }

在这里实现人物左右的移动逻辑:

    private void Update()
    {
        moveDirection = ia.Game.Move.ReadValue<Vector2>();
        rb.velocity = moveDirection * moveSpeed;
       
        if(moveDirection.x<0)
        {

            sr.flipX = true; //向右走时,翻转角色
        }

        else if(moveDirection.x >0)
        {

            sr.flipX = false; //向左走时,不翻转角色
        }

        Animation();//
    }

创建状态机使得人物可以在空闲状态和奔跑状态切换

先打开Animator

window->Animation->Animator

在project下创建一个新的文件夹装Animator Controller

然后将素材中的动画拖入到Animator中

右击状态建立idle和run的关系

点击Make Transition

创建一个float标志命名为speed

在这个箭头上设置如下:

另一个箭头这样:

代码中的部分:

  private void Animation()
  { 

  anim.SetFloat("Speed", rb.velocity.magnitude);//设置动画的Speed属性为刚体速度的大小

  }

五、效果演示

演示视频

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值