【unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

news2024/12/18 18:51:07

在这里插入图片描述


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

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

本文由 秩沅 原创

收录于专栏:unity游戏制作


⭐mango的冒险场景二——镜头和法球特效跟随⭐


文章目录

    • ⭐mango的冒险场景二——镜头和法球特效跟随⭐
    • 🎶版本前言
    • 👨‍💻相机的差值跟随
      • 👺步骤和效果图
      • 👺代码
      • 👺可能出现的BUG
    • 👨‍💻法球攻击系统的实现
      • 👺法球的生成和跟随
      • 👺代码
    • ⭐相关文章⭐


🎶版本前言


🎶版本: 为 Ltp 2021年版本的unity
🎶类型: 简单2D类冒险游戏
🎶目的: 熟悉掌握基本unityAPI
🎶视频教程:【2023小白狂飙unity2D冒险类游戏制作【mango的冒险】】


👨‍💻相机的差值跟随


重点: 做辅助点 和 用lerp()方法


👺步骤和效果图


实现一般相机跟随的简单方法
①手动挂载
②代码实现

  • 1.🧠通过API获取主对象mango,然后将相机用API附成mango的子对象即可实现跟随第一步
  • 2.🧠若当时任务转向的方法采用的是方法二旋转的话那么画面辉变成如下效果,画面也跟着转了

获取

  • 3.🧠若当时任务转向的方法采用的是方法三Scale的话那么画面会变成如下效果,那么这个才是我们想要的效果

在这里插入图片描述

  • 4.🧠用差值移动让相机平滑的跟随,先给mango添加子物体辅助点,该点的位置与相机初始值的位置一致
  • 5.🧠让相机跟着该辅助点进行lerp差值移动,故此就不需要上面让相机变成子物体这一步,原因如下

左右移动切换十分不流畅

在这里插入图片描述

  • 6.🧠相机跟着该辅助点进行lerp差值移动的效果如下

🎶这是最终我们想要的效果
在这里插入图片描述


👺代码


using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
//-----------------------
//--作用:相机的移动
//-----------------------
public class CameraMove : MonoBehaviour
{
    private Transform  Mango;
    void Start()
    {
        Mango = GameObject.Find("Mango").transform;
    }
    void LateUpdate()
    {
     transform .position = Vector3.Lerp(transform.position, GameObject.Find("Mango").transform.GetChild(1).position, 0.1f);
    }

👺可能出现的BUG


【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题


👨‍💻法球攻击系统的实现


👺法球的生成和跟随


重点: 做辅助点 和 用lerp()方法,倒计时方法


  • 1.将母体变成预制体,以便捷之后的操作

  • 2.添加四个点前两个作为高层级法球的定点,后两个作为低层级的定点
    在这里插入图片描述

  • 3.法球分成高层级预制体和低层级预制体,添加自定义的粒子特效
    +、

  • 4.实例化四个法球,让四个法球跟着四个定点进行lerp差值跟随移动,给母体添加脚本
    (方式为:通过代码添加)

在这里插入图片描述

  • 5.给法球添加抖动效果
    (要实现每个法球都上下晃动的话需要随机数,只需要改变其Y轴的位置即可,那么要取其晃动的范围,法球最好跟着辅助点进行Lerp差值跟随)
    在这里插入图片描述
    额 搞错了再来🤣
    在这里插入图片描述
    最终效果如上🧠🧠🧠🧠🧠🧠

👺代码



using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.PlayerLoop;
using UnityEngine.Rendering;
//-----------------------
//--作用:法球的跟随移动
//-----------------------

public class BallMove : MonoBehaviour
{
    // Start is called before the first frame update
    private GameObject fab1,fab2;
    private Transform  [] emptyP =  new Transform[5];
    private GameObject [] Fball  = new GameObject[5];
    void Start()
    {
        fab1 = Resources.Load<GameObject>(@"prefab1/iea1");
        fab2 = Resources.Load<GameObject>(@"prefab1/iea2");
        for (int i = 1; i < emptyP.Length; i++)
        {
            emptyP[i] = transform.GetChild(i);
        }
        creatMove();
    }

    private void creatMove()
    {
        for (int i = 1; i < emptyP.Length; i++)
        {
            if (i < 3)
            {
                Fball[i] = Instantiate<GameObject>(fab1, emptyP[i].position, Quaternion.identity);
            }
            else
            {

                Fball[i] = Instantiate<GameObject>(fab2, emptyP[i].position, Quaternion.identity);
            }

            IeaMove PoM = Fball[i].AddComponent<IeaMove>();
            PoM.Pball = emptyP[i];
        }

    }
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//----------------------
//--作用:法球的上下效果晃动
//----------------------
public class BallShape : MonoBehaviour
{

    private float UpDown;
    private float YPell;
    private float endTime = 2;
    private Vector2 Ball;
    void Start()
    {
        YPell = transform.position.y;
    }
    void FixedUpdate()
    {

        endTime = Mathf.MoveTowards(endTime, 0, 0.1f);
        if (endTime == 0)
        {
            Debug.Log("正在进行");
            BallJump();
            endTime = 2;

        }
    }

    private void BallJump()
    {
        UpDown = Random.Range(-1, 1f) * 5;
        Ball = new Vector2(transform.position.x, YPell +UpDown );
        transform.position = Vector2.Lerp(transform.position, Ball, 0.1f);
    }
}


🎶🎶我们继续后面的制作。


⭐相关文章⭐

⭐【2023unity游戏制作-mango的冒险】-开始画面API制作

⭐【unity游戏制作-mango的冒险】-场景搭建

⭐“狂飙”游戏制作—游戏分类图鉴(网易游学)

⭐本站最全-unity常用API大全(万字详解),不信你不收藏



你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!

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

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

相关文章

【2023蓝桥杯】枚举专项题笔记

【枚举】卡片小蓝有很多数字卡片&#xff0c;每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数&#xff0c;他想从 1开始拼出正整数&#xff0c;每拼一个&#xff0c;就保存起来&#xff0c;卡片就不能用来拼其它数了。小蓝想知道自己能从 1拼到多少。例如&#xff0c…

JVM垃圾回收器概述

Serial串行回收 Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。 Serial收集器作为HotSpot中client模式下的默认新生代垃圾收集器。 Serial收集器采用复制算法、串行回收和"stop-the-World"机制的方式执行内存回收。 除了年轻…

【Redis】概述环境搭建(一)

&#x1f697;Redis学习起始站~ &#x1f6a9;本文已收录至专栏&#xff1a;数据库学习之旅 &#x1f44d;希望您能有所收获 一.初识Redis (1) 概述 Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。这里有两…

数字IC笔试题---千题解,量大管饱,图文并茂

前言&#xff1a;出笔试题汇总&#xff0c;是为了总结秋招可能遇到的问题&#xff0c;做题不是目的&#xff0c;在做题的过程中发现自己的漏洞&#xff0c;巩固基础才是目的。所有题目结果和解释由笔者给出&#xff0c;答案主观性较强&#xff0c;若有错误欢迎评论区指出&#…

es8集群模式部署

准备3台机器 192.168.1.41 192.168.1.42 192.168.1.43因为es集群有几个节点&#xff0c;所以我对应node1&#xff0c;node2&#xff0c;node3.这几个名称并不是主机名&#xff0c;而是es节点名称 2. 开始部署&#xff0c;基础配置 (三台都做) systemctl stop firewalld syste…

【数据库】SQL语句

第三章 SQL SQL(structured Query Language) SQL概述 SQL特点 综合统一。高度非过程化。面向集合的操作方式。以同一种语法结构提供多种使用方式。语言简洁易学易用。 主要版本 SQL-89SQL-92 ,SQL2SQL-99 ,SQL3 数据库结构 SQL语言是集DDL、DML和DCL于一体的数据库语言…

网安入门,这篇文章足够了(内含海量资料)

随着新一轮科技和产业变革加速演进&#xff0c;人工智能、物联网、大数据、5G等新兴技术在成为经济社会发展的助推器的同时&#xff0c;也让网络空间变得更加复杂。全球范围内网络安全事件日益增加&#xff0c;网络安全的重要性日渐凸显。 “我国网络空间安全人才年培养规模在…

STM32——窗口看门狗

什么是窗口看门狗&#xff1f; 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测 程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。 产生复位条件&#xff1a; 当递减…

CLion开发图书管理系统项目 (c++ + MySQL实现)

项目仓库 &#xff1a;传送门 需求分析 当下市场日益激烈的竞争迫使图书企业采用一种新的管理方式来加快图书管理操作&#xff0c;而计算机技术的发展为图书管理注入了新的生机。通过调查市场&#xff0c;一款合格的图书管理系统必须具备以下三个特点&#xff1a; 能够对图书…

注解原理剖析与实战

一、注解及其原理 1.注解的基本概念 注解&#xff0c;可以看作是对 一个类/方法的一个扩展的模版&#xff0c;每个类/方法按照注解类中的规则&#xff0c;来为类/方法注解不同的参数&#xff0c;在用到的地方可以得到不同的类/方法中注解的各种参数与值。 从JDK5开始&#xff…

【必学】最流行的云原生监控解决方案:Prometheus+Grafana

文章目录一、Prometheus和Grafana简介1.1、Prometheus是最受欢迎的云原生监控方案之一1.2、Grafana是最流行的开源可视化平台二、Prometheus的优势三、Prometheus架构原理四、Prometheus和Grafana安装部署一、Prometheus和Grafana简介 1.1、Prometheus是最受欢迎的云原生监控方…

如何进行单元测试

前言单元测试是指对软件中最小可测单元进行检查和验证&#xff1b;c语言中单元指一个函数&#xff0c;java中指一个类。图形化软件中可以指一个窗口或者一个菜单。总的来说&#xff0c;单元就是认为规定最小的被测试模块。1.1单元测试对我们开发程序有什么好处首先是一个前端单…

react: input 输入框 中文onChange事件异常问题 对input输入进行防抖处理

当我们使用Input时&#xff0c;我们可能会遇到一个问题&#xff0c;比如需要对用户输入的内容进行搜索时&#xff0c;当用户处于中文输入时&#xff0c;明明没有对内容进行确认&#xff0c;为什么会触发了onChange事件呢&#xff1f;比如以下场景&#xff0c;中文一边输入另外一…

机器学习知识总结 —— 20.使用朴素贝叶斯进行数据分类

文章目录准备基础数据计算先验概率计算条件概率预测分布验证结果作为一种监督学习分类方法&#xff0c;在上一章中我们已经介绍过它的数理原理。现在我们开始来实现一个简单的朴素贝叶斯分类的算法&#xff0c;这样我们能更好的理解它是怎么运作的。 准备基础数据 首先还是有…

加密流量专栏总览

文章目录加密流量专栏1. 原理篇2. 模型篇3. 文章分类总结3.1 研究方向3.2 特征提取3.3 机器学习模型改进3.4 深度学习模型改进3.5 其他模型改进3.7 实时检测3.8 概念漂移检索论文的方法加密流量专栏 1. 原理篇 原理&#xff1a; 会话、流、数据包之间的关系。 流&#xff1a;…

【离线数仓-4-数据仓库设计-分层规划构建流程】

离线数仓-4-数据仓库设计-分层规划&构建流程离线数仓-4-数据仓库设计-分层规划&构建流程1.数据仓库分层规划2.数据仓库构建流程1.数据调研1.业务调研2.需求分析3.总结2.明确数据域3.构建业务总线矩阵&维度模型设计4.明确统计指标1.指标体系相关概念1.原子指标2.派生…

【渝偲医药】DSPE-PEG-RGD;磷脂聚乙二醇多肽试剂级简介

DSPE-PEG-RGD、 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-多肽、磷脂PEG多肽 英文名称: 1,2-Distearoyl-sn-Glycero-3-Phosphoethanolamine-PEG- RGD 溶剂:可溶解在水中和大多数有机溶剂中 外观:白色粉末 用途:用于链接带有链霉亲和素或其他的基团的分子 分子量(PEG ):2000、3400、…

那些开发过程中需要遵守的开发规范

入职公司三天&#xff0c;没干啥其他活&#xff0c;基本在配置本地环境和阅读相关文档。技术方面公司基本用的是主流的技术体系&#xff0c;入职后需要先阅读阿里的开发规范和其他的一些产研文档。今天整理一些平时需要关注的阿里规约和数据库开发规范&#xff0c;方便今后在开…

TatukGIS Developer Kernel for .NET

TatukGIS Developer Kernel for .NET 用于.NET的TatukGIS开发人员内核的强大功能&#xff1a; 打开、创建、编辑、保存和导出矢量、图片和网格的过程&#xff0c;包括类似于数据库的格式。 扩展属性、北箭头、比例和其他视觉控制也从TatukGIS编辑器/查看器商品中显示给用户开发…

Java基础系列(五): final关键字用法

一. 概述 final关键字代表最终,不可改变的. 常见有5种用法,我们来归纳总结一下: 1. 用来修饰一个类 2. 用来修饰一个方法 3. 用来修饰成员变量 4. 用来修饰局部变量 5. 用来修饰方法参数 二. final饰修类 如果声明一个类为final类, 那么这个类就是最终类,不能被继承 …