2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

这篇具有很好参考价值的文章主要介绍了2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

 

👨‍💻个人主页:@元宇宙-秩沅

hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

本文由 秩沅 原创

收录于专栏 unity实战入门

 ⭐相关文章⭐
———————————————————
-[本站最全-unity常用API大全(万字详解),不信你不收藏]

-[关于游戏剧情模式中用到的基础简单API]

-[控制游戏人物移动的细节到底有多少?]

 -[坦克炮管旋转发射炮弹 游戏demo ]

-[基于unity物体定点移动与模拟刹车的细节 GIF 图文详解]
————————————————————

目录

一.资源的导入

二,地图地形的绘制

三,层级渲染

四,添加运动脚本

五,物理碰撞

六.Tilemap collider2D(瓦片地图碰撞器)

七,添加主人公的生命值

八,陷阱效果

八,为人物添加动画

九.让敌人移动并且带有动画

核心代码:

后续请看2022版本unity-2D游戏官方案例【2】--带视频案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)


一.资源的导入

视频教案:

https://www.bilibili.com/video/BV1KW4y1t7aT?p=1&vd_source=417b589e47f6429bbd2ce14c6abe5080

操作:windoes - Asset store -搜索2D Beginner: Complete Project

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2D Beginner: Complete Project

二,地图地形的绘制

视频教案:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

1..怎么绘制地形

Hierarch面板-创建2D Object- Tilemap -Rectangle(长方形)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.怎么更快的绘制地形

编辑器的快捷键介绍:

S 选中 ,M移动 ,B画笔, I取色器 ,U按母体绘制,D橡皮 ,G大范围绘制

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

三,层级渲染

视频教案:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

为什么要实现层级渲染,因为在编辑过程中会出现,同级物体将物体随机覆盖的时候。这是人物和环境都被地形覆盖。

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

1.渲染的先后顺序

编辑器当中,后渲染的会挡住先渲染的,成为系统自带的“盖被子”操作,要想实现这个顺序的调换,咋们要实现一个“掀开被子”操作,也是根据自己的想法让谁先显示出来。

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.基本操作的细节

关键操作: sprite renderer -order in layer -将其层级设置为最小,可以为上图的-1,即为先渲染

实现后渲染覆盖先渲染,此时人物和环境显示在画面中。

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

四,添加运动脚本

视频教案:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

1.让物体能够上下左右进行移动

(1)借助了自身的组件position,根据实时更新它新的位置实现这样一个移动(建议这种方法)

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

public class MOVE1 : MonoBehaviour
{
    // Start is called before the first frame update
    public float speed=3.0f;
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        float a, b;
        a = Input.GetAxis("Horizontal"); //让a获得一个水平方向的运动量
        b = Input.GetAxis("Vertical");  //让b获得一个垂直方向的运动量
        Transform ruby = GetComponent<Transform>();
        Vector2 position = ruby.transform.position;
        position.x = position.x + a*Time .deltaTime*speed ;
        position.y = position.y + b*Time .deltaTime *speed;
        ruby.transform.position = position;
        
    }
}

(2)通过它的刚体组件让其获得一个运动的状态

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

public class MOVE1 : MonoBehaviour
{
    // Start is called before the first frame update
    public float speed = 2000.0f;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float a, b;
        a = Input.GetAxis("Horizontal"); //让a获得一个水平方向的运动量
        b = Input.GetAxis("Vertical");  //让b获得一个垂直方向的运动量
        Rigidbody2D ruby = GetComponent<Rigidbody2D>();
        ruby.AddForce(new Vector2 (a*Time .deltaTime*speed ,b*Time .deltaTime*speed ));
        //在x,y轴上面给它添加了一个力让它进行这个运动

    }

五,物理碰撞

视频教案:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

1.了解基本物理系统,物理组件(Rigidbody ,Box collider。。。)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

1.先将rigidbody2D 里面的重力取消,将gravity Scale 变为0

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.调整碰撞器的范围,让其适应游戏物体的大小

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.纠正常见出错的效果细节

1.碰撞后产生的旋转

解决措施:勾选z轴,即可解决旋转的效果

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.碰撞后的抖动

脚本代码:

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

public class MOVE1 : MonoBehaviour
{
    // Start is called before the first frame update
    public float speed=3.0f;
    public Rigidbody2D ruby2d;
    void Start()
    {
        ruby2d = GetComponent<Rigidbody2D>();
        //首先我们要得到组件,它有了实质
    }

    // Update is called once per frame
    void Update()
    {
        float a, b;
        a = Input.GetAxis("Horizontal"); //让a获得一个水平方向的运动量
        b = Input.GetAxis("Vertical");  //让b获得一个垂直方向的运动量
       Transform ruby = GetComponent<Transform>();
        Vector2 position = ruby.transform.position;
        position.x = position.x + a*Time .deltaTime*speed ;
        position.y = position.y + b*Time .deltaTime *speed;
        // ruby.transform.position = position;//改变的是游戏物体自身组件位置从而达到运动效果
       
        ruby2d.MovePosition(position);
        
    }
}

六.Tilemap collider2D(瓦片地图碰撞器)

教案视频:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

1.目的:为了添加全局障碍

2.目的:便捷操作

(1)在Add component中添加Tilemap Collider2D。

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

(2)打開Project面板中Tile瓦片素材,

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

None选项是不变成“障碍”,Grid让其变成“障碍”

七,添加主人公的生命值

教案视频:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

1.给主人公添加生命值脚本

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

public class blood : MonoBehaviour
{
    float fullblood = 5.0f;
    public float Health = 5.0f;
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("此时血量为满血:" + fullblood);
    }
    // Update is called once per frame
    void Update()
    {

    }
    public void changeblood(float vaule) //血量变化
    {
        if(Health == 0)
        {
            Debug.Log("你已經死亡!");
            return;
        }
        Health += vaule;
        if (vaule > 0)
        {
            Debug.Log("血量增加了!"+Health );
        }
        if (vaule < 0)
        {
            Debug.Log("血量减少了!"+Health );
        }
        
    }
}

八,陷阱效果

教案视频:2022版本unity-2D游戏官方案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)_哔哩哔哩_bilibili

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

实现目的: 1.进入后主人公掉血

操作流程:

1.给陷阱添加BOX Collider,并且勾选上IS Tigger,目的:将碰撞器改为触发器。

2.添加代码(让主人公掉血)

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

public class DAMAGE : MonoBehaviour
{
    // Start is called before the first frame update
    private void OnTriggerEnter2D(Collider2D collision) //接触到陷阱的时候发生
    {
        BLOOD ruby = collision.GetComponent<BLOOD>();
        //建立通道,获取BLOOD 
        if(collision .tag =="BOSS")
        {
            ruby.changeblood(-1.0f); //负数就是让它的生命值减少
        }
    }
    private void OnTriggerStay2D(Collider2D collision)//呆在陷阱里面发生
    {
        BLOOD ruby = collision.GetComponent<BLOOD>();
        if (collision.tag == "BOSS")
        {
            ruby.changeblood(-1.0f); //负数就是让它的生命值减少
        }
    }
}

实现的目的:

(1)接触陷阱的时候掉血。

(2)呆在陷阱里面还是会掉血。

(3)添加计时器的脚本 (作为牛逼时间)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

牛逼时间:(进入牛逼时间不掉血)

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

public class blood : MonoBehaviour
{
    float fullblood = 5.0f;
    public float Health = 5.0f;
    public  float  ntime = 2.0f;//无敌时间
    public float Ntime;
    public bool istime;
  
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("此时血量为满血:" + fullblood);

    }
    // Update is called once per frame
    void Update()
    {
        if(istime)
        {
            if (Ntime > 0)
            {
                Ntime -= Time.deltaTime;
                
            }
            else
            {
                istime = false;
            }
        }
    }
    public void changeblood(float vaule) //血量变化
    {
        if(Health == 0)
        {
            Debug.Log("你已經死亡!");
            return;
        }
        Health += vaule;
        if (vaule > 0)
        {
            Debug.Log("血量增加了!"+Health );
        }
        if (vaule < 0)
        {
            istime = true;
            Ntime = ntime;
            Debug.Log("血量减少了!" + Health);
        }
        
    }
}

八,为人物添加动画

1.Animator(动画师),Inspector面板中添加Add component

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.Animator controller动画控制器 ,project面板里面添加,前提创建文件夹,便于自己梳理素材,拖拽到inspector面板中,Animation组件中的Controller中

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

3.window-Anniamtion-Animator 添加动画编辑器

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

4.添加动画资源

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

(1)怎样添加动画资源(资源后缀名,.anim)

直接将动画资源拖拽到Animator 动画编辑器当中

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

(2)实现动画的切换

右键单击动画时间(被拖拽上去的素材)点击第一个Make transition 创建一个过渡箭头,点击第二个Set 按鼠layer Default state 让其作为初始的默认动画。

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

(3)动画资源后缀名为.anim 这种动画资源是怎么制作呢

window -Animation-Aniamtion(快捷键ctrl+6)打开动画素材编辑器

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

九.让敌人移动并且带有动画

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

1.添加两个相互方向移动的脚本

(1)让敌人运动

(2)添加一个变化方向的参数,为之后向反方向去运动。

(3)添加计时器代码,目的:1控制移动的时间 2.控制方向变化

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.在脚本中添加动画切换的参数(derection)

目的: 解决动画的毫无规律(让动画按照我们规定来)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

3.让动画和移动的方向契合(细节点)

1.关闭退出时间

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2.将Transiton Duration由0.25变为0,

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

核心代码:

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

public class SPORTenemy : MonoBehaviour
{
    public float derection = 1.0f; //代表右边为正方向
    public float maxtime = 5.0f; //给计时器定了个最大值
    public float nowtime = 5.0f;
    public Animator robot;
    void Start()
    {
        
    }

    // Update is called once per frame
    void FixedUpdate()//频率是0.02 和 Void Update //生命周期
    {
        robot.SetFloat("enemyderection", derection);

        if (nowtime>0) //计时器倒计时时改变时间和路程
        {
            Vector2 position = transform.position;
            Rigidbody2D enemy = gameObject.GetComponent<Rigidbody2D>();
            nowtime -= Time.deltaTime; //实时倒计时
            position.x += Time.deltaTime * derection; //路程在变化
                      enemy.MovePosition(position);  //路程在变化
        }
        else
        {
            derection = -derection;
            nowtime = maxtime;
        }

        
       
    }
}

后续请看2022版本unity-2D游戏官方案例【2】--带视频案例(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

 ⭐相关文章⭐
———————————————————
-[本站最全-unity常用API大全(万字详解),不信你不收藏]

-[关于游戏剧情模式中用到的基础简单API]

-[控制游戏人物移动的细节到底有多少?]

 -[坦克炮管旋转发射炮弹 游戏demo ]

-[基于unity物体定点移动与模拟刹车的细节 GIF 图文详解]
————————————————————

你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!文章来源地址https://www.toymoban.com/news/detail-436879.html

到了这里,关于2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Unity2d】Sprite Renderer精灵渲染器

    【Unity2d】Sprite Renderer精灵渲染器

           我们把游戏开发中的Sprite叫做精灵对象,简称精灵,就是游戏中的一个具有行为的元素。        创建精灵 (GameObject 2D Object Sprite) 时,Unity 会自动创建一个附加了 Sprite Renderer 组件的游戏对象。还可以通过 Components 菜单 (Component Rendering Sprite Renderer) 将该组件添加到

    2024年02月05日
    浏览(9)
  • 【Unity】UGUI中Camera Depth,Canvas Sorting Layer、Order in Layer与Particle System渲染层级分析

    【Unity】UGUI中Camera Depth,Canvas Sorting Layer、Order in Layer与Particle System渲染层级分析

    目录   前言 一、项目需求 二、Camera 1.Clear Flags 2.Culling Mask  三、Canvas 1.Sorting Layer 2.Order in Layer 四、Particle System 1.Sorting LayerID 与Order in Layer 总结         最近在做项目的过程中,发现项目中的部分3d模型会被粒子特效所遮挡,这并不是笔者想要的效果,于是经过一番面向

    2024年02月05日
    浏览(11)
  • 2D和3D版本的重力游戏

    描述 2D版本的重力游戏 如果你已经完成了该任务,并想要更大的挑战,紧接着介绍3D版本 在上物理课的时候很无聊,所以我给自己做了一个玩具箱来打发时间。这个盒子很特别,因为它有改变重力的能力。 盒子里有几列玩具方块,排成一列。第i列包含a_i个立方体。起初,盒

    2024年02月02日
    浏览(9)
  • UNITY—2D游戏制作入门!

    UNITY—2D游戏制作入门!

    Unity作为当今最流行的游戏引擎之一,受到各大厂商的喜爱。 像是炉石传说,以及逃离塔克夫,都是由unity引擎开发制作。 作为初学者的我们,虽然无法直接做出完成度那么高的作品,但每一个伟大的目标,都有一个微不足道的开始。让我们从一个2D小游戏入手,来学习Unit

    2024年02月04日
    浏览(12)
  • Unity——2D小游戏笔记整理

    Unity——2D小游戏笔记整理

    【每日一句:清晨和夜晚都请用尽全力去生活】 目录 一、环境搭建 二、人物 三、相机跟随人物移动 四、平铺精灵 五、血条跟随敌人行走 六、脚本逻辑 【玩家行走方法】 【玩家跳跃方法】 【改变玩家血量值方法】 【创建玩家子弹方法】 【主角血量,改变血条遮罩】 【敌

    2024年02月09日
    浏览(12)
  • Unity Physics2D 2d物理引擎游戏 笔记

    Unity Physics2D 2d物理引擎游戏 笔记

    2d 材质 里面可以设置 摩擦力 和 弹力 Simulated:是否在当前的物理环境中模拟,取消勾选该框类似于Disable Rigidbody,但使用这个参数更加高效,因为Disable会销毁内部产生的GameObject,而取消勾选Simulated只是禁用。 Kinematic 动力学刚体 动力学刚体不受重力和力的影响,而受用户的

    2023年04月24日
    浏览(43)
  • Unity之创建第一个2D游戏项目

    Unity之创建第一个2D游戏项目

    一 Unity环境配置 1.1 Untity资源官网下载:https://unity.cn/releases 1.2 Unity Hub集成环境,包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD,JDK,NDK工具,用于android环境的运行 二 创建Unity项目 2.1 新建2D模板项目 2.2 新建2D物体 2.3 新建C#脚本文件 

    2024年02月04日
    浏览(8)
  • unity-2D游戏地面检测 三射线检测

    unity-2D游戏地面检测 三射线检测

        2D游戏中跳跃是不可或缺的功能,要实现跳跃功能,就必须进行地面检测!常规方法是使用一根往角色下方延伸的射线检测,但是这种方法在一些复杂不规则的地面效果通常不尽人意。通过增加射线数量,即可完善这种方法的不足,达到在复杂地面也能正确检测角色是否

    2024年02月15日
    浏览(11)
  • Unity:2D游戏设置相机orthographicSize动态设置

    Unity:2D游戏设置相机orthographicSize动态设置

    目录 根据设备分辨率动态设置相机 orthographicSize 2d游戏里面相机的Orthan.size确定的是高度,宽度是按照屏幕的宽高比计算出来的 cameraWidthSize = camera.Orthographic.size*(Screen.Width/Screen.height) 我在游戏里设置的 开发分辨率是1080*1920 所以我在原先Y=1920情况下 Camera设置的orthographicSize=

    2024年01月25日
    浏览(9)
  • 用unity写一个2D类的拼图游戏

    用unity写一个2D类的拼图游戏

    前几天接了一个拼图项目刚好现在写完了,拿出来分享,拼图不难,我也是看了一个官方案例写的,因为当我们写图片跟随鼠标的时候,鼠标已经有一个图片了,这个图片会遮挡射线,然后就无法判断当前拼图块在哪里,话不多说,上菜 1、新建总控脚本LevelManager 2、新建Pu

    2024年02月08日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包