Unity 2D 游戏学习笔记

Posted 百年bd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 2D 游戏学习笔记相关的知识,希望对你有一定的参考价值。

三、瓦片地图        

        这次我们来对背景地图的设置,需要用到unity中的瓦片工具Tile。首先在官方教程中下载所需的瓦片资源图片Tile,放入之前存放Ruby图片的Sprites文件夹中。官方教程:世界设计 - 瓦片地图 - Unity Learn

        首先创建一个瓦片地图, 在Hierarchy窗口中右键-->2D Object-->TileMap-->Rectangular

         创建完查看以下Inspector属性

         然后我们点开Tile Palette界面,创建一个新的调色板Palette,命名为Game Palette,点击create创建。

         创建后存入Art-->Tiles文件夹中,接下来在Tiles文件夹中右键-->Create-->2D-->Tile-->Rule Tile。将新的RuleTile命名为Brick Tile。

Animated Tile:动画瓦片,Rule Tile:规则瓦片

        没有找到Tile Palette,就在PackManager中的UnityRegistry中搜Tilemap Extra下载安装,如果搜不到,那么打开Edit-->project Settings-->Package Manager后,勾选红线部分的Enable Preview Packages。再去搜索就能搜到了。

         创建成功后,将刚刚保存的瓦片图片导入,先把Sprites中的瓦片图片的Texture Type切换为Sprite类型,不然没法导入。然后点击Porject中Tiles文件夹中刚刚新建的BrickTile,Inspector窗口显示如下。

         点击Select,查找tile找到转化为精灵的瓦片,创建好后,就把它拖进Tile Palette中,就完成了一个瓦片的配置。

        这时发现在地图上画时中间会有缝隙,我们查看Scripts中的Tile,会发现它的像素是64x64,但属性中的大小Pixels Per Unit却是100,我们只需要把该属性调成64,它就可以平铺画面了。

瓦片集

        当我们需要制作大量地图时,一个一个切换放就很麻烦,这时候就需要用到瓦片集。

        找到资源包中Art->Sprites->Environment文件夹,里面有很多大块192x192像素大,也就是3x3Grid方格大的图片。当我们要做出像四周红土地包围着石砖地时,应用瓦片集就可以让它自动识别该放哪块,不用自己动手切换了。

        首先我们任选一个3x3瓦片,将Sprite Mode切换为Multiple,把像素改为对应的像素,然后点击该瓦片中的Sprite Editor。

         Sprites Editor中点击左上角的Slice(切片),选择Type中的Grid by cell size(按单元格大小划分网格),然后点击Slice进行切割,界面中就会看到原本一块的地图被按照单元格大小分割为了九块,点击右上角的Apply,地图就分割完毕了。

        这时可以看到一整块的资源下边有九个被分割的小块。

         新建一个RuleTile,命名为Rule Tile1,Default Colider设置为Sprite,Number of Tiling Tules设置为9个,把刚才分割的瓦片直接拖到每个里面,将❌和→调整好,点一次时绿箭头,再点一次时红叉。

         调整完之后就可以自动识别啦,如图,绕着画一圈自动识别成这个样子

键盘和鼠标快捷方式

还有一些有用的快捷方式将帮助你绘制瓦片地图:

  • Alt + 鼠标左键拖动 - 平移

  • 鼠标滚轮键拖动 - 平移

  • 旋转鼠标滚轮键 - 放大或缩小

 

[Unity学习笔记:FPS游戏制作]子弹拖尾,碰撞与枪口火焰效果

往期博客[Unity学习笔记:FPS游戏制作(2)] 发射子弹————(2021.6.20学习笔记)

一,实现思路

使用粒子系统制作子弹拖尾特效与子弹碰撞特效,碰撞碎屑飞溅特效。在子弹生成的时候,将拖尾粒子效果置于子弹的子物体集中,保证拖尾粒子效果能跟随子弹物体一起运动,然后在子弹碰撞到物体的时候,在子弹位置生成碰撞特效与碎屑飞溅特效

二,粒子效果的实现

(1)子弹拖尾特效的实现

新建一个粒子系统对象,重命名为BulletTailE,修改参数值如下图





子弹拖尾特效实现效果如下图

(2)枪口火焰特效的实现

新建一个粒子系统对象,重命名为OpenFireP,修改参数值如下图





枪口火焰特效实现效果如下图

(3)碎屑飞溅特效的实现

新建一个粒子系统对象,重命名为ExplosionDetritus,修改参数值如下图





碎屑飞溅特效实现效果如下图

(4)子弹碰撞爆炸波特效的实现

新建一个粒子系统对象,重命名为ExplosionEffect,修改参数值如下图





子弹碰撞爆炸波特效实现效果如下图

(5)子弹碰撞特效的实现

将碎屑飞溅特效设置为爆炸波特效的子物体,使两个特效合成为子弹碰撞特效,效果如下图

三,子弹与物体碰撞触发粒子特效的实现

(1)设置子弹预制体与被碰撞物体的参数

给子弹预制体添加刚体与碰撞体组件,并将碰撞体组件的IsTrigger选项点开,然后给被碰撞物体添加碰撞体组件,详细设置如下图


(2)子弹碰撞物体触发特效代码的实现

代码如下

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

public class BulletScript : MonoBehaviour
{
   
    public GameObject BulletTPrefab;//子弹拖尾特效预制体
    public GameObject ExplosionPrefab;//子弹爆炸特效预制体
    void Start()
    {
        GameObject BulletTail = Instantiate(BulletTPrefab);
        BulletTail.transform.parent = transform;
        BulletTail.transform.rotation = transform.rotation;
        BulletTail.transform.localPosition = new Vector3(0, 0, 0);//在指定坐标生成子弹
    }

   
    void Update()
    {
      
    }
    
    private void OnTriggerEnter(Collider other)//当物体接触到另外一个刚体时触发
    {
     
        GameObject ExplosionEffect = Instantiate(ExplosionPrefab,transform.position,transform.rotation);
        Destroy(ExplosionEffect, 2);

    }
   
}

把该脚本挂载于子弹预制体

四,最终效果

以上是关于Unity 2D 游戏学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Ruby‘s Adventrue游戏制作笔记Unity绘制其他元素

Ruby‘s Adventrue游戏制作笔记Unity创建项目

Ruby‘s Adventrue游戏制作笔记Unity创建项目

Unity教程1:如何切割我的图片素材并使用tilemap搭建游戏背景(Pixels Per Unit设置不合适问题)

求教如何在Unity中为2D游戏制作技能特效

简易2D横版RPG游戏制作