目录

导入素材

人物移动

人物跳跃


我使用的Unity版本为2020.3.13f1c1,代码编辑器VSCode

导入素材

素材均来自https://itch.io/的免费素材

我选择的是https://rvros.itch.io/animated-pixel-hero素材

导入到Unity后全选人物图片,在右侧的检测器里更改一些参数,然后点击应用

修改像素大小为16

过滤模式选择-点(无过滤器),这样可以使图片不会模糊

人物移动

将adventurer-idle-00(待机图片)拖入到场景内,修改名字为Player

为Player添加2D刚体和2D碰撞盒

·        

修改碰撞盒贴合Player即可

在项目窗口新建一个物理材质,命名为Player,将Friction和Bounciness都设置为0,并将该材质拖入到刚体的物理材质内 ,这样做的原因是不会让人物卡在墙上

代码编写,新建文件夹Scripts,并在其目录新建脚本,命名为 PlayerControl.cs

双击打开PlayerControl.cs,开始编写移动代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerControl : MonoBehaviour
{#region 组件private Rigidbody2D rb;//2D刚体#endregion#region 公开参数[Header("移动参数")]public float moveSpeed;//人物移动速度#endregionprivate void Start(){rb = GetComponent<Rigidbody2D>();}private void FixedUpdate(){Move();}// 人物移动 和 转向private void Move(){float moveX = Input.GetAxis("Horizontal");rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);//判断人物的朝向if (moveX > 0)transform.localScale = new Vector3(1, 1, 1);else if (moveX < 0)transform.localScale = new Vector3(-1, 1, 1);}
}

返回Unity,测试

测试之前先在场景内放一个物体,并添加碰撞盒,这样让角色站在上面

人物跳跃

跳跃代码,在移动代码上添加

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerControl : MonoBehaviour
{#region 组件private Rigidbody2D rb;#endregion#region 公开参数[Header("移动参数")]public float moveSpeed;//人物移动速度[Header("跳跃参数")]public float jumpForce;//跳跃的力 (及高度)public float jumpAddForce;//长按跳跃 增加的高度public float jumpTime;//按下跳跃键的时间public float jumpStartTime;//初始时间public bool isJump;//是否正在跳跃[Header("环境检测")]public float checkRadius;//检测地面偏移public LayerMask whatIsGround;//地面图层public Transform feetPos; //地面检测点#endregion#region 私有参数public bool isGround;//是否在地面#endregionprivate void Start(){rb = GetComponent<Rigidbody2D>();}private void Update(){isGround = Physics2D.OverlapCircle(feetPos.position, checkRadius, whatIsGround);Jump();}private void FixedUpdate(){Move();}// 人物移动 和 转向private void Move(){float moveX = Input.GetAxis("Horizontal");rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);//判断人物的朝向if (moveX > 0)transform.localScale = new Vector3(1, 1, 1);else if (moveX < 0)transform.localScale = new Vector3(-1, 1, 1);}//人物的跳跃private void Jump(){//按下跳跃键if (Input.GetKeyDown(KeyCode.Space) && isGround){//将跳跃锁定isJump = true;//跳跃rb.velocity = Vector2.up * jumpForce;jumpTime = jumpStartTime;}//长按跳跃键if (Input.GetKey(KeyCode.Space) && isJump == true){//当长按时间大于零if (jumpTime > 0){//在长按跳跃这段时间,跳跃rb.velocity = Vector2.up * jumpForce;//长按时间减去每一帧jumpTime -= Time.deltaTime;}}else{isJump = false;}if (Input.GetKeyUp(KeyCode.Space)){isJump = false;}}
}

哦,对了,刚体记得冻结Z轴,不然人物会倒的

至此人物移动和跳跃就写完了

Unity2D横版游戏开发(一) 人物的移动和跳跃相关推荐

  1. Unity2D横版游戏开发-游戏框架构建脚本学习

    第一章 The First Episode 目标:四处移动.跳跃.蹬墙跳.从墙上滑下 第一步:设置地图 1.在Unity 2D模板中新建一个项目 2.导入资产.设置每个像素图片.将精灵图进行切片.新建 ...

  2. Unity2D横版游戏开发-游戏框架构建脚本学习(二)

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using U ...

  3. 小狐狸横版游戏开发学习笔记(上)

    小狐狸横版游戏开发学习笔记(上) 目录 小狐狸横版游戏开发学习笔记(上) 1.关于如何创建Tilemap 2.关于地图格子之间出现间隙的问题 3.如何设置自己想要的控制按键 4.如何解决玩家移动过程中 ...

  4. unity2D横版游戏教程-2 代码实现

    接下来就是写代码的时候 我们创建一个文件夹用来存我们的脚本,名字就叫Scripts,在里面右键->Create->C#Script,这样就创建好了一个脚本 直接将这个脚本拖给我们Hiera ...

  5. 基于unity的2D横版游戏开发日志 小结

    前言 说是基于unity的2D横版游戏,实际上只是一个初学unity与C#新人的练手Demo,目前还处于半成状态.美术资源方面全部出自unity免费资源,经过自己的小修,大致拼出了一个游戏.代码方面, ...

  6. unity2D横版游戏教程终章-主菜单和暂停菜单

    最后一节我们做一下主菜单和暂停菜单 我们创建一个新的scene,命名为Menu,这个就是主菜单场景 我们双击Menu进去设置一下我们的UI 我们先添加一下Canvas,在Canvas下面创建连个Pan ...

  7. unity2D横版游戏教程-1 让人物动起来

    在看完了麦扣老师的小狐狸的视频后,为了巩固练习,我另外找一个素材包来练手,顺便写成一个教程让自己更加熟练,同时当自己遗忘时可以回头查阅.另外,这个教程我写的非常详细,萌新也可以学习.有什么不对的地方或 ...

  8. java 横版游戏开发_用MyEclipse的Java Project开发仿DNF横版格斗游戏

    这些天,我正在用MyEclipse的Java Project开发一款仿DNF 横版格斗游戏. http://v.youku.com/v_show/id_XMTI5MTE0NDg4MA==.html 这 ...

  9. Unity2D横版游戏地形生成

    演示视频 横版地形生成 功能: 将地形素材赋值给脚本,脚本会生成对应的地形素材,可以控制生成素材的高度,生成的时间间隔,是否每次随机时间生成,会有一个范围值来进行控制: Mountain 01_tra ...

最新文章

  1. exchange2003的部署
  2. ubuntu 安装SSH并设置免密码登录
  3. mysql触发器 while循环_mysql触发器跳出当前循环方法
  4. 【深度学习】引用次数在15000次以上的都是什么神仙论文?
  5. P1967,ssl2267-货车运输【树上倍增LCA,最小生成树变形kruskal】
  6. 前端笔试题小结(一)
  7. java 字符串 常量_Java进阶——Java中的字符串常量池
  8. 500份IT数字化转型资料,限量领!堪称最全,领不到会发慌
  9. 点云孔洞定位_隧道三维点云孔洞修复方法
  10. 机械革命bios升级_旧笔记本光驱换SSD,升级内存,改造散热还能再战5年
  11. List集合去重的常见几种方式
  12. 如果查找SCI期刊属于哪个中科院分区
  13. Java基础梳理第二天03(继承、抽象类、多态)
  14. 驰为vi10 java_驰为Win10 Remix双系统 for Vi10,独一无二
  15. 《MySQL DBA修炼之道》——3.3 SQL基础
  16. Word文档怎么删除html标签,word怎么清除所有格式
  17. miui无法降级安装app_小米MIUI放大招!拒绝降级,小米Max3不能降级
  18. Watch App简介
  19. 变量值互换自定义函数swap()的使用
  20. LeetCode 825 friends-of-appropriate-ages

热门文章

  1. Sinoregal dbAudit应用-SinoDB
  2. C语言操作数据库(一)
  3. 虚拟机linux系统硬盘扩容设置
  4. 【微信小程序】--WXML WXSS JS 逻辑交互介绍(四)
  5. 3310 4g版 支持java吗,诺基亚33104G版怎么样 诺基亚33104G版优势介绍【详解】
  6. 如何解决无法显示隐藏文件夹
  7. 张飞老师硬件第二十部视频整理:无人机系统算法讲解及思维导图实现
  8. 关于++m 和 m++
  9. 游戏建模到底怎么学呢?怎样才能拿到高薪?
  10. wangEditor自定义上传图片上传按钮,适合各种JS或者后端上传