实现内容:人物角色左右移动
一、导入素材
素材来源:
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属性为刚体速度的大小
}
五、效果演示
演示视频