一、步骤

1.创建一个Canvas

2.对Canvas进行初始化,记得把Game视图的分辨率调成和Canvas里面设置的一样的分辨率960X640

3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg,设置宽高为1920X1080,Image组件里面的Color设置为黑色。

4.设置背景image的Pivot(表示bg节点的原点位置)的X为0,Y为0.5

5.设置背景image的Pos X为-480,其他为0

6.创建一个Ground空节点在Canvas父节点下,里面放障碍物的image

7.在Ground文件夹下面创建名为g1,g2,g3,g4的image类型的UI节点,作为障碍节点,设置这些障碍节点的颜色不同

8..在Ground文件夹下面创建名为item的image类型的UI节点,作为主角节点,设置这个节点的Image组件的贴图,记得设置贴图的Texture Type为Sprite,拖进去后记得set native size

9.给主角添加Rigidbody 2D的刚体组件,设置Gravity Scale重力加速度为60

10.给主角添加Box Collider 2D的正方形形状组件,点击Edit Collider编辑形状区域

11.给Ground障碍物组节点添加Edge Collider 2D的边界形状组件,把左上角那个菊花图案选择为中心的那个图案

12.点击Ground节点的Edge Collider 2D组件的Edit Collider编辑形状区域,不同的是这个是两个绿色的点,要自己拉伸来包围整个障碍物,先从左拉到右边,然后从左边开始每次都拉一小段来慢慢包围,最后要包围屏幕边界,不然主角跳出屏幕

  地图编辑的时候,如果是水平的,还需要最后数值调整,要让某两个点的Y轴一样,不然会滑动。

13.创建一个地面材质,Create-Physics2D Material,设置摩擦力,弹性都位0,把编辑好的Material拖进ground节点的Material属性中。

14.接下来要用一个脚本来通过键盘控制主角移动

15.在写的过程中要获得和键位匹配的参数Horizontal

Edit--Project Settings--Input

public class player : MonoBehaviour {
Rigidbody2D body;
// Use this for initialization
void Start () {
     //获得刚体
this.body = this.GetComponent<Rigidbody2D>();
// 设置刚体不会有选转;两种方法
this.body.freezeRotation = true;
// this.body.constraints = RigidbodyConstraints2D.FreezeRotation;
} // 跳跃
void jump() {
this.body.AddForce(new Vector2(, ));
} void walk(int dir) {
     //获得刚体速度
Vector2 v = this.body.velocity;
if (dir < ) {
v.x = -;
this.transform.localScale= new Vector3(-, , );
}
else if (dir > ) {
v.x = ;
this.transform.localScale = new Vector3(, , );
}
this.body.velocity = v;
} // Update is called once per frame
void Update () {
if (Input.GetButtonDown("Jump")) {
this.jump();
}
// 左边走
else if (Input.GetAxisRaw("Horizontal") < ) {
this.walk(-);
}
// 右边走
else if (Input.GetAxisRaw("Horizontal") > ) {
this.walk();
}
}
}

16.设置摄像机跟着主角一起运动

a.设置Canvas节点的Canvas组件的Reander Mode为Screen Space Camera

b.把main Camera节点拖进Canvas节点的Canvas组件的Render Camera属性

c.一定要记得把main Camera节点放在Canvas节点下面,作为子节点,不然会出错,Canvas会和摄像机一起移动,这和Canvas与摄像机的实现机制有关系,由于Unity是不开源的,所以猜测。

public class player : MonoBehaviour {
Rigidbody2D body;
public Camera bind_camera = null;
private Vector3 offset = Vector3.zero;
// Use this for initialization
void Start () {
this.body = this.GetComponent<Rigidbody2D>();
// 刚体不会有选转;两种方法
this.body.freezeRotation = true;
// this.body.constraints = RigidbodyConstraints2D.FreezeRotation; // 计算玩家到camera的相对距离
if (this.bind_camera != null) {
this.offset = this.bind_camera.transform.position - this.transform.position;
}
} // 跳跃
void jump() {
this.body.AddForce(new Vector2(, ));
} void walk(int dir) {
Vector2 v = this.body.velocity;
if (dir < ) {
v.x = -;
this.transform.localScale= new Vector3(-, , );
}
else if (dir > ) {
v.x = ;
this.transform.localScale = new Vector3(, , );
}
this.body.velocity = v;
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown("Jump")) {
this.jump();
}
// 左边
else if (Input.GetAxisRaw("Horizontal") < ) {
this.walk(-);
}
// 右边
else if (Input.GetAxisRaw("Horizontal") > ) {
this.walk();
} if (this.bind_camera != null) {
// 摄像机位置的y,z不变,x随着主角的移动而移动
Vector3 new_position = this.offset + this.transform.position;
new_position.y = this.bind_camera.transform.position.y;
new_position.z = this.bind_camera.transform.position.z;
this.bind_camera.transform.position = new_position; // this.bind_camera.transform.position = this.offset + this.transform.position;
}
}
}

17.添加UI界面

a.再创建一个Canvas节点,和原来的Canvas是平级的

b.在新Canvas节点下面创建一个UI类型的Button节点

c.把Button的菊花改到左上角的那个图案,点击Button设置它的菊花,菊花的位置会跑到父节点Canvas的左上角那个点,那个点相对于Button来说就是原点位置。

d.设置Button的大小和它子节点Text的字体内容和字体大小。

注意:

游戏一般都是两层Canvas

1.一层是overlay模式处理GUI

2.一层是camera模式处理游戏内容

关于Unity中使用刚体制作简单跑酷案例的更多相关文章

  1. 关于Unity中的刚体和碰撞器的相关用法(二)

    在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...

  2. unity中的动画制作方法

    Unity中的动画制作方法 1.DOTween DoTween在5.0版本中已经用到了,到官网下载好插件之后,然后通过在项目中导入头using DG.Tweening;即可. 一些常用的API函数 D ...

  3. arduino中SCoop库的简单应用案例

    转载:https://www.csdn.net/gather_27/MtTaggzsMDExMS1ibG9n.html arduino中SCoop库的简单应用案例首先这篇文章来在视频https://v ...

  4. 关于Unity中的刚体和碰撞器的相关用法(一)

    1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObj ...

  5. Unity中AB资源打包简单的脚本

    脚本应该放在Editor文件夹下 using System.Collections; using System.Collections.Generic; using UnityEngine; usin ...

  6. 关于Unity 中对UGUI制作任务系统的编程

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  7. Unity中简单使用Opengl

    简介 由于项目特殊需求,需要在unity中使用一些OpenGL的东西来绘制图形(PS:其实就是有一个拖尾算法只有OpenGL版本~~~懒得改了,直接在unity中使用OpenGL算了).所以琢磨咯下如 ...

  8. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

  9. unity 中UGUI制作滚动条视图效果(按钮)

    1.在unity中创建一个Image作为滚动条视图的背景: 2.在Image下创建一个空物体,在空物体下创建unity自带的Scroll View组件: 3.对滑动条视图的子物体进行调整: 4.添加滚 ...

随机推荐

  1. OGG_GoldenGate目标端库级别数据初始化(案例)

    2014-03-07 Created By BaoXinjian

  2. Unix环境高级编程(三)标准I/O库

    标准I/O库是ISO C的标准,在很多操作系统上面都实现.Unix文件I/O函数都是针对文件描述符的,当打开一个文件的时候,返回该文件描述符用于后续的I/O操作.而对于标准I/O库,操作则是围绕流进行 ...

  3. Linux内核(4) - 内核学习的心理问题

    对于学习来说,无论是在学校的课堂学习,还是这里说的内核学习,效果好或者坏,最主要取决于两个方面——方法论和心理.注意,我无视了智商的差异,这玩意儿玄之又玄,岔开了说,属于迷信的范畴. 前面又是Kern ...

  4. web项目,美工和前台配合,页面路径访问问题

    一.美工写页面使用相对路径,但后台使用项目的应用绝对路径,访问时会出现404或页面乱码的问题 目前的解决方法:在页面中添加base标签,指定当前页面默认的路径 base标签:为页面上的所有链接规定默认 ...

  5. java jsch 登录linux系统避免手动输入Yes 或Always

    java jsch方法 登录linux系统, 要手动输入Yes No Always The host 10.202.84.7 is currently unknown to the system Th ...

  6. MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.

    一. 怎么更改数据库data存储目录:  1. 安装MYSQL. 2. 切换到 C:\Program Files\MySQL\MySQL Server 5.6 3. 新建my.ini. 加入如下配置: ...

  7. 编辑控件的警告提示是:This text field does not specify an inputType or a hint

    没有设置editText的inputtype属性,比如<android:inputtype="textpassword"> http://binuu.blog.51ct ...

  8. Centos设置静态IP及修改Centos配置文件的方法

    通常,如果我们想更改主机地址为静态地址或者更改主机名,需要修改的几个文件包括: /etc/sysconfig/network Centos设置主机名和网络配置 /etc/sysconfig/netwo ...

  9. CSS选择器、层叠相关的基础知识

    CSS是Cascading Style Sheets的英文缩写,即层叠样式表.CSS2.1是W3C于2007年发布,现在推荐使用的.CSS3现在还处于开发中,有部分浏览器的新版本支持. 1. CSS ...

  10. 在Visual Studio 2012中使用XNA 4.0

    XNA 4.0默认是将项目模板安装到VS2010中的,并不能够自动安装到VS2012,所以需要一些操作来让VS2012中也可以使用XNA 4.0模板. 1.下载XNA 4.0 下载地址:http:// ...