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日
    浏览(31)
  • 【Unity小游戏】《捕鱼达人》小游戏来啦~ 有源码下载【文末送书】

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

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

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

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

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

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

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

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

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

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

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

    2024年02月09日
    浏览(31)
  • unity开发微信小游戏步骤

    将Unity项目接入到微信小程序中需要通过微信开发者工具进行操作 1. 准备工作 在开始接入前,需要保证您的开发环境已经搭建完成。具体包括以下步骤: - 安装Unity编辑器,并确保您的项目能够正常运行。 - 下载微信小程序开发者工具,并登录微信开发者账号。 - 创建一个微

    2023年04月22日
    浏览(42)
  • unity开发微信小游戏1

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最开使用unity3d开发微信小游戏,遇到了一些问题,记录一下, 同时创建了一个交流群 QQ 641029627,现在应该没人,有需要的可以加入一起讨论,广告哥远离 提示:以下是本篇文章正文内容,下面案例可

    2023年04月08日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包