unity愤怒的小鸟学习制作(二)

news2024/12/28 21:02:38

终于又开始了啦啦啦,我有一个自己的相机了,真开心,诶嘿

视频链接和素材如下:视频


小鸟的飞出

想要让小鸟在拉开弹弓之后能飞出去,就必须让这个组件失活,如下

在这里插入图片描述

所以我们更改脚本内容,加入:

 private SpringJoint2D sp;
     private void Awake()
    {
        sp = GetComponent<SpringJoint2D>();
    }
     private void OnMouseUp()//当鼠标抬起就会调用该函数
    {
        isClick = false;
        sp.enabled = false;
    }

然后就可以看到小鸟飞出去的速度很大,需要修改。

可以通过小鸟是否加入动力学进行修改,这样速度就不会太大(讲真,没怎么听懂)
在这里插入图片描述

也就是,先修改成:
在这里插入图片描述

然后再将脚本修改成:

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

public class Bird : MonoBehaviour
{
    //要实现当鼠标一直按下时,小鸟的位置跟随鼠标的位置
    private bool isClick = false;
    public Transform rightPos;
    public float maxDis = 3;//最大距离是3米
    
    private SpringJoint2D sp;
    private Rigidbody2D rg;
    private void Awake()
    {
        sp = GetComponent<SpringJoint2D>();
        rg = GetComponent<Rigidbody2D>();
    }

    private void OnMouseDown()//当鼠标按下就会调用该函数
    {
        isClick = true;
        rg.isKinematic = true;//开启动力学
    }
    private void OnMouseUp()//当鼠标抬起就会调用该函数
    {
        isClick = false;
        rg.isKinematic = false;
        Invoke("Fly", 0.1f);
    }

   
    private void Update()//刷新
    {
        if (isClick)//鼠标一直按下,进行位置的跟随
        {
            transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            //需要把小鸟的Z轴减去主摄像机的Z轴
            transform.position -= new Vector3(0, 0, Camera.main.transform.position.z);
            //保证z轴数值为0
            //transform.position += new Vector3(0,0,10);

            if (Vector3.Distance(transform.position, rightPos.position) > maxDis)//大于最大长度
            {
                Vector3 pos = (transform.position - rightPos.position).normalized;//单位化向量
                pos *= maxDis;//最大长度的向量
                transform.position = pos + rightPos.position;
            }
        }
    }

    //专门为了小鸟飞出写的函数
    void Fly()
    {
        
        sp.enabled = false;
    }
}




这样基本就可以了,但是如果需要微调的话,可以调节以下参数:

在这里插入图片描述
这里的Damping Radio就是阻尼系数,范围是0-1,系数越大,弹簧的弹力效果越不明显

小鸟和猪、木头的碰撞(死或者受伤)

因为小鸟飞出之后需要有一个平面来接住他,所以要新建一个空物体

也就是在Hierachy空白处右键点击,选择创建空物体
在这里插入图片描述
然后再将空物体归零

在这里插入图片描述
因为空物体要存放所有需要的环境之类的,所以重命名为env

接下来找到需要的主题,比如这个第一个主题,点击之后,在Spite Mode 这里,将Single改成Mutiple,然后点击下方的Apply
在这里插入图片描述

完成Apply之后点击Sprite Editor进行裁剪
在这里插入图片描述
虽然视频里面点击一下Trim就切割完成了,但是我没成功,就只好手动切割了,切割完成就点击Apply

在这里插入图片描述
然后将颜色较深的这个切割好的图片拖到上面

在这里插入图片描述
然后给图片添加一个碰撞盒
在这里插入图片描述

在这里插入图片描述
然后编辑碰撞盒
在这里插入图片描述

在这里插入图片描述
将盒子向下拉一点,再将这个图片放到env里面

在这里插入图片描述
在这里插入图片描述
然后不断复制粘贴拼接图片,在Scence里面放好小鸟的地面,如下:
在这里插入图片描述
尝试运行,发现小鸟飞的太快了,没有阻力

在这里插入图片描述
修改这个Angular Drag,因为这个值相当于空气阻力的一种,将其放大,测试,发现还可以

在这里插入图片描述
挑选一只猪,将其拖上去,然后摆放好位置

给这只猪加一个碰撞盒和一个Rigidbody2D

在这里插入图片描述

记得修改参数

在这里插入图片描述

现在开始给猪一个脚本,写关于他的碰撞死亡


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

public class Pig : MonoBehaviour
{
    // Start is called before the first frame update
    
    public float maxSpeed = 10;
    public float minSpeed = 5;
    private SpriteRenderer render;
    public Sprite hurt;

    private void Awake()
    {
        render = GetComponent<SpriteRenderer>();
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        //相对速度
        print(collision.relativeVelocity.magnitude);
        if (collision.relativeVelocity.magnitude > maxSpeed)//直接死亡
        {
            Destroy(render);
        }else if(collision.relativeVelocity.magnitude > minSpeed&& collision.relativeVelocity.magnitude < maxSpeed)
        {
            render.sprite = hurt;
        }
    }
}


然后再将hurt的对象变为小猪受伤的图片,104号

在这里插入图片描述
运行,感觉还不错

今日就到这里吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS应用端云一体化开发主要流程

图示 主要步骤 序号 阶段 任务 说明 1 创建端云一体化开发工程 选择工程类型与云开发模板 确定工程类型&#xff1a;选择“Application”或“Atomic Service”页签&#xff0c;确定创建的是HarmonyOS应用工程还是原子化服务工程。选择云开发模板&#xff0c;包括通用云开…

【FMC202】基于FMC标准的1路CameraLink Full 输入、1路DVI输出 子卡模块

产品概述 FMC202是一款基于FMC接口标准的1路CameraLink Full模式&#xff08;或者2路CameraLink Base模式&#xff09;采集、1路HDMI&#xff08;DVI&#xff09;视频输出的子卡模块&#xff0c;该模块具有2个CameraLink端口&#xff08;SDR&#xff0c;26PIN&#xff09;&…

Docker部署apache superset

使用Docker compose在docker中部署Apache Superset 说明&#xff1a;部署步骤按照superset官网说明总结而来-2023年 1、第一步安装docker 、docker compose。 这里我选择手动下载rpm包&#xff0c;然后yum install *.rpm方式来安装。 下载地址&#xff1a;https://download.…

MADDPG-学习笔记(2)

注意&#xff1a;进行本文的实验前&#xff0c;为了加快训练速度&#xff0c;进行了参数调整 num-episodes&#xff1a;由60000改成了10000 lr:由0.01改成了0.1 batch-size:由1024改成了32 1.报错 1.1 AttributeError: Scenario object has no attribute benchmark_data …

ApiKit 介绍及基本用法

1、ApiKit介绍及下载 ApiKitAPI 管理 Mock 自动化测试 异常监控 团队协作 结合 API 设计、文档管理、自动化测试、监控、研发管理和团队协作的一站式 API 生产平台&#xff0c;从个人开发者到跨国企业用户&#xff0c;Apikit 帮助全球超过50万开发者和10万家企业更快、更好…

【Flutter】Flutter CLI (2):调试分析项目 flutter analyze 命令详解

文章目录 一、前言二、对现有项目进行分析和调试1. flutter analyze2. 修改代码暴露错误3. 再次执行flutter analyze4. 调试模式运行代码 flutter run三、本文涉及命令的完整说明1.flutter analyze四、总结一、前言 在上一篇文章中,我们对 Flutter CLI 的命令进行了分类,并通…

Array的扩展方法(from、find、findlndex、includes)

Array.from() 构造函数方法:Array.from() 将类数组或可遍历对象转换为真正的数组 示例 <script>// 构造函数方法:Array.from()// 将类数组或可遍历对象转换为真正的数组let arr {0: a,1: b,2: c,length: 3,};let arr1 Array.from(arr);console.log(arr1);//["…

对回溯的理解与思考(从决策树遍历角度分析)

对于回溯的经典问题&#xff0c;就是全排列和各种各样全排列的变体和八皇后问题。 算法框架 对于回溯算法框架。其实解决一个回溯问题&#xff0c;实际上就是一个决策树的遍历过程。 这也就是为什么在刷算法题之前&#xff0c;一定要从树的题目开始刷&#xff0c;后期可以很方…

检索 COM 类工厂中 CLSID 为 {} 的组件失败, 内存资源不足,无法处理此命令

如果您收到ERROR_NOT_ENOUGH_MEMORY消息&#xff0c;提示没有足够的存储空间来处理此命令描述&#xff0c;请按照本文中列出的故障排除步骤进行修复。 此错误代码影响Windows服务器&#xff0c;导致系统崩溃&#xff0c;并在错误日志中显示“没有足够的存储空间来处理此命令”。…

Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130762721 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

Clickhouse 入门到精通-Clickhouse工作原理

Clickhouse 为什么做查询分析那么快&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 因为clickhouse使用了下列方案&#xff1a; clickhouse 数据分区clickhouse 列式存储clickhouse 一级索引&#xff08;主键索引&#…

企业数字转型加速器!居然是他!该不会还有人没用上吧?

随着数字化时代的到来和技术的发展&#xff0c;企业数字化转型已经成为全球企业发展的重要趋势。然而&#xff0c;数字化转型的过程却并非一帆风顺&#xff0c;常常因为 IT 复杂度高、开发周期长等问题而遇到许多挑战&#xff0c;这时候低代码开发平台就能够发挥重要作用。 低代…

我们为什么还要学习Altium Designer?

Altium Designe&#xff08;简称“AD”&#xff09;是电子设计领域中备受推崇的软件工具之一&#xff0c;拥有强大的功能和灵活的设计环境&#xff0c;也是要用最广泛的EDA工具之一&#xff0c;为电子工程师提供了无限可能&#xff0c;但很多工程师学完AD基本操作就转投其他EDA…

支付宝小程序打包成APP

发行——原生App-云打包——填写安卓包的信息&#xff08;安卓证书可在香蕉云编下载&#xff09;——打包——下载APK 第一步&#xff1a;点击菜单栏发行 第二步&#xff1a;选择远程APP-云打包 第三步&#xff1a;在香蕉云编&#xff08;https://www.yunedit.com/&#xff0…

K8S之yaml文件,声明式管理方法

目录 第一章.声明式管理方法 1.1.声明式管理方法 1.2.kubectl create 和 kubectl apply区别 1.3.查看资源配置清单 1.4.解释资源配置清单 1.5.修改资源配置清单并应用 第二章.yaml文件格式 2.1.yaml文件简述 2.2.YAML 语法格式 2.3.查看 api 资源版本标签 2.4.写一个…

MVC中Controller向View传值的几种方式

MVC中Controller向View传值的几种方式 文章目录 MVC中Controller向View传值的几种方式一、ViewModel使用ViewModel 二、ViewData在控制器和视图间使用ViewData传递数据在 ViewDataTest 视图中使用ViewData的数据在视图和部分视图间使用ViewData 三、ViewBag四、TempData五、Ses…

搭建短链服务

目录 一、背景 1.1短链接的优势 1.1.1优点一 1.1.2优点二 1.1.3优点三 1.1.4优点四 1.1.4优点五 二、原理 2.1利用http重定向 3.1实现方案 3.1.1发号器实现 3.1.2存储实现 3.1.3映射实现 3.2架构图 一、背景 短链在互联网中盛行&#xff0c;搭建自己短链平台&…

硬件工程师-MOS管

MOSFET 场效应管 N管 P管 对标三极管 N管 P管 三极管具有功率放大的作用 MOSFET也具有功率作用&#xff0c; 控制级的电流很小 控制信号的内阻大 输出级的电流很大 输出信号的内阻很小 三极管的缺点&#xff1a;流控…

Blender 建模键盘(PS修图、UV贴图、Cycles渲染引擎)

目录 1. 键盘模型1.1 键盘底座1.2 底座细节1.3 logo位置1.4 键盘按键1.5 按键添加1.6 合并按键 2. 贴图、渲染2.1 到PS添加按键文字2.2 保存png图片2.3 图像纹理2.4 UV编辑2.5 添加平面2.6 添加环境纹理2.7 灯光、摄像机2.8 渲染属性2.9 渲染出图 1. 键盘模型 原图 1.1 键盘底…

三、IOC容器(2)

四、IOC操作Bean管理&#xff08;xml注入集合属性&#xff09; 4.在集合里面设置对象类型值 ①Course类 ②Stu类 ③配置xml文件 ④测试 5.把集合注入部分提取出来 在Spring配置文件中引入名称空间 util 2.使用util标签完成list集合注入 ①提取list集合类型的属性注入 <…