首页 > 技术文章 > Ruby's Adventures 02 地板铺设 添加碰撞信息 刚体信息

OnlyACry 2020-09-14 18:33 原文

2.地图的设置

Hierarchy -> 右键 -> 2D -> 建立Tilemap

creat -> Assets中建立Tile文件夹,存放地板信息。  右键 -> creat -> Tile -> 设置样式

分割地板:  选中一个地板样式,Sprite Mode设置为Multiple,如图,

选择Sprite Editor,打开后按图选择模式

 选择切割成为3*3,切割完成后点击Apply应用。其他的地板进行相同的操作。

在Window中打开2D选项,选择Tile Palette

 

 

 

 

将Environment信息拖入Tile Palette中,更改图片像素信息。可以在unity中右键show in explorer,查看图片的详细属性,看图片的原像素并进行调整。192/3=64,所以将Pixels Per Unit(每单元的像素)更改为64并应用。

之后,将每个地板信息拖入到Tile Palette中,关于地板对人物的覆盖问题,可以在人物的inspector面板对sprite renderer的order in layer中调高其参数

导入树木,给树木添加碰撞信息。Add component中搜索Box Collider 2D

 

 

 给人物添加刚体信息(grid...),和碰撞信息,调整人物的碰撞信息为腰部,这样不会在人物头顶到树木时无法通过。并将刚体信息中的gravity调整为0.

 

 

这时运行游戏发现人物碰撞到树木时会歪倒,于是添加下面的代码。 

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class unuseZ : MonoBehaviour
 6 {
 7     // Start is called before the first frame update
 8     void Start()
 9     {
10         
11     }
12 
13     // Update is called once per frame
14     void Update()
15     {
16         if (transform.localEulerAngles.z != 0)
17         {
18             float rotX = transform.localEulerAngles.x;
19             float rotY = transform.localEulerAngles.y;
20             transform.localEulerAngles = new Vector3(rotX, rotY, 0);
21         }
22     }
23 }

解决Ruby倾倒的另一个方法:把刚体控制中的z轴冻结(Freeze)

 

 

 

在Edit -> ProjectSettings -> graphics 中设置树木遮挡人物的属性,设置完成后ctrl+S保存,如图

 

将设置好的元素拖到 Assets -> Prefabs中来进行场景的设置。

推荐阅读