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

这篇具有很好参考价值的文章主要介绍了Unity——2D小游戏笔记整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【每日一句:清晨和夜晚都请用尽全力去生活】

目录

一、环境搭建

二、人物

三、相机跟随人物移动

四、平铺精灵

五、血条跟随敌人行走

六、脚本逻辑

【玩家行走方法】

【玩家跳跃方法】

【改变玩家血量值方法】

【创建玩家子弹方法】

【主角血量,改变血条遮罩】

【敌人(减血物体)触发检测,调用玩家改变血量值方法ChangeHealth(int amount)】

【敌人来回移动代码】

【改变敌人血量方法EnemyChangeHealth() 引用敌人血量脚本EnemyHealth EnemySetValue(currentHealth / (float)maxHealth);】


一、环境搭建

1.瓦片地图Tilemaps

创建 2DObject——>Tilemap——>Rectangular

        Window——>2D——>Tile Palette

瓦片集 Sprite Mode从Single改为Multiple

             Pixel Per Unit值从100更改为64

2.添加瓦片地图碰撞:Tilemap Collider2D组件

选择的瓦片不再被视为碰撞体:在Inspector找到Collider Type属性,Sprite更改为None

优化瓦片地图碰撞体Composite Collider2D组件,会自动添加Rigidbody2D,在Tilemap Collider2D,启用Used By Composite

在Rigidbody2D,将Rigidbody Body Type属性设为Static

二、人物

动画

Right_Run——>Left_Run

单击Add Property,然后单击Sprite Render旁边的三角形,再单击Flip X旁边的+图标

使用混合树:

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

【待完善……】

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

【上下左右移动】

三、相机跟随人物移动

使用Cinemachine包

Window——>PackageManager——>Cinemachine

使用GameObject——>Cinemachine——>Virtual Camera

Cinemachine Virtual Camera组件

调整Orthgraphic Size(摄像机的一半高度内可容纳多少个单位);Follow 跟随主角

四、平铺精灵

1.首先确保游戏对象的缩放在Transform组件1:1:1

2.在SpriteRender组件中将Draw Mode设为Tiled,Tile Mode改为Adaptive

精灵的Inspector面板,Mesh Type改为Full Rect

五、血条跟随敌人行走

public class FollowBlood : MonoBehaviour

{

    public Transform player;

    public Image hp;

    public  Camera cam;

    void Update()

    {

        //把人物的坐标转化到屏幕坐标

        var playerScreenPos = cam.WorldToScreenPoint(player.position);

        //再把人物坐标Y加一个高度给到人物

        hp.rectTransform.position = new Vector2(playerScreenPos.x, playerScreenPos.y + 35f);

    }文章来源地址https://www.toymoban.com/news/detail-485228.html

   

}

六、脚本逻辑

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

【玩家行走方法】

void Movement()

    {

        float horizontal = Input.GetAxisRaw("Horizontal");

        rb.velocity = new Vector2(horizontal * speed, rb.velocity.y);

        Vector2 move = new Vector2(horizontal, 0);

        if (horizontal != 0)

        {

            //lookDir.Set(move.x, 0);

            lookDir.Normalize();

            ani.SetBool("IsSpeed",true);

        }

        else  if(horizontal == 0)

        {

            ani.SetBool("IsSpeed", false);

        }

        //Debug.Log(horizontal);

        if (horizontal > 0)

        {

            ani.SetFloat("LookX", 1);

        }

        else if (horizontal < 0)

        {

            ani.SetFloat("LookX", 0f);

        }

      

}

【玩家跳跃方法】

void Jump()

    {

        if (isGround)

        {

            jumpCount = 2;

        }

        if (isJump && isGround)

        {

            rb.velocity = new Vector2(rb.velocity.x, jumpForce);

            //jumpForce--;

            isJump = false;

        }

        else if (isJump && !isGround && jumpCount > 0)

        {

            rb.velocity = new Vector2(rb.velocity.x, jumpForce);

            jumpCount--;

            isJump = false;

        }

【改变玩家血量值方法】

public void ChangeHealth(int amount)

    {

        if (amount < 0)

        {

            if (isInvincible)

                return;

            isInvincible = true;

            invincibleTimer = timerInvincible;

        }

        currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);

        UIHealth.instance.SetValue(currentHealth / (float)maxHealth);

        Debug.Log(currentHealth + "/" + maxHealth);

    }

【创建玩家子弹方法】

void CreatBullet()

    {

        GameObject bul = Instantiate(bullet, rb.position + Vector2.right * 0.5f,Quaternion.identity) as GameObject;

        Projectile proj = bul.GetComponent<Projectile>();

        proj.Launch(300);

    }

—————————————————————————————————————————

【主角血量,改变血条遮罩】

public class UIHealth : MonoBehaviour

{

    public static UIHealth instance

    {

        get;private set;

    }

    public Image mask;

    float originalSize;

    private void Awake()

    {

        instance = this;

    }

    // Start is called before the first frame update

    void Start()

    {

        originalSize = mask.rectTransform.rect.width;

    }

    public void SetValue(float value)

    {

        mask.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, originalSize * value);

    }

}

【敌人(减血物体)触发检测,调用玩家改变血量值方法ChangeHealth(int amount)】

private void OnTriggerStay2D(Collider2D collision)

    {

        PlayerController controller = collision.GetComponent<PlayerController>();

        if (controller != null)

        {

            controller.ChangeHealth(-1);

        }

    }

【敌人来回移动代码】

void Update()

    {

        timer -= Time.deltaTime;

        if (timer < 0)

        {

            direction = -direction;

            timer = changeTime;

        }

        if (direction == 1)

        {

            ani.SetBool("isLeft", true);

        }

        else

        {

            ani.SetBool("isLeft", false);

        }

}

private void FixedUpdate()

    {

        Vector2 position = rb.position;

        if (vertical)

        {

            position.y = position.y + Time.deltaTime * speed * direction;

        }

        else

        {

            position.x = position.x + Time.deltaTime * speed * direction;

        }

        rb.MovePosition(position);

    }

【改变敌人血量方法EnemyChangeHealth() 引用敌人血量脚本EnemyHealth EnemySetValue(currentHealth / (float)maxHealth);】

public void EnemyChangeHealth(int amount)

    {

      

        currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);

        Debug.Log("敌人当前血量+" + currentHealth + amount);

        eh.EnemySetValue(currentHealth / (float)maxHealth);

        Debug.Log(currentHealth + "/" + maxHealth);

    }

到了这里,关于Unity——2D小游戏笔记整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Unity小游戏】游戏开发案例-Unity打造畅玩无阻的小游戏(上)

    乒乓克隆 使用立方体建造竞技场、球拍和球。 移动球和球拍。 击球并得分。 让相机感受到冲击力。 给游戏一个抽象的霓虹灯外观。 这是有关基础游戏的系列教程中的第一个教程。在其中,我们将创建一个简单的 Pong 克隆。 本教程是使用 Unity 2021.3.16f1 制作的。 本系列将涵

    2024年02月13日
    浏览(43)
  • 【Unity小游戏】《捕鱼达人》小游戏来啦~ 有源码下载【文末送书】

    📢博客主页:https://blog.csdn.net/zhangay1998 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 📢未来很长,值得我们全力奔赴更美好的生活✨

    2023年04月08日
    浏览(37)
  • Unity小游戏——迷你拼图

    拼图演示 资源:  链接:https://pan.baidu.com/s/1BGeSmRCO_WZRUyl3MxefGw  提取码:0n4a 排列拼图碎片,拼出最后的图案。可以点住碎片的任意位置拖动;点击\\\"重来\\\"按钮,可以回到最初状态重新开始。 有很多电脑游戏的原型来自于现实世界中的玩具,拼图游戏就是其中的一个代表。 本

    2024年02月14日
    浏览(43)
  • Unity - 微信小游戏

    总参考:Unity WebGL 微信小游戏适配方案(公测)   下载 Unity插件,并导入至游戏项目中,版本更新请查看更新日志 请查阅推荐引擎版本,安装时选择 WebGL 组件 最终选择 Unity2021.2.5f1c1 InstantGame 前往Node官网安装长期稳定版 之前已安装 v16.17.0 前往微信开发者工具下载安装 Stable

    2024年02月06日
    浏览(54)
  • 【Unity】小球吃方砖小游戏

    目录 游戏背景 游戏开发         2.1场景布置         2.2小球运动         2.3镜头跟踪         2.4吃掉方砖         2.5结束提示 游戏录制           用wasd(↑←↓→)操控小球进行平面滑动,小球触碰会原地打转的立方体后立方体会消失,消除5个小球后提示

    2024年02月09日
    浏览(37)
  • Unity 开发微信小游戏

    今天给大家分享一下我近期用Unity开发微信小游戏的经过和踩坑; 微信小游戏就是微信小程序,小游戏是小程序的一个子集,小游戏是一种特殊的小程序;这篇文章建议大家收藏,干货满满 Unity开发微信小程序 Unity 3D下载官网 Unity转化小程序的Package包下载地址 微信开发者工

    2024年02月09日
    浏览(40)
  • unity小球吃金币小游戏

    链接放在这里 unity小球吃金币小游戏-Unity3D文档类资源-CSDN下载 这是我在学完虚拟现实技术这门课程后利用unity所做的小球吃金币小游戏,里面有源码和作品源文件,用u更多下载资源、学习资料请访问CSDN下载频道. https://download.csdn.net/download/m0_57324918/85604051 1创建Roll A Ball小球吃

    2023年04月08日
    浏览(46)
  • 现有Unity转微信小游戏

    关于微信小游戏开发的内容在《Unity WebGL 微信小游戏适配方案》中有详细,这里会忽略大部分更深入的细节,大家可以自行在下面的地址中找到答案。 此篇文章的目的是带着大家快速的把自己已有的游戏转成微信小游戏。 《Unity WebGL 微信小游戏适配方案》地址: https://gith

    2023年04月08日
    浏览(77)
  • Unity 开发微信小游戏初探

    最近因项目需要开始研究Unity开发微信小游戏相关的知识。期间遇到各种坑,网上查阅的资料基本类似,无法解决自己遇到的问题。特用本文记录下过程,方便其他人遇到同样的问题时能够参考。 Unity 版本 根据微信小游戏插件文档推荐使用2021.2.5版 。实测2021.3.x 以上版本均可

    2024年02月05日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包