草庐IT

8.Unity2D 横版 视差滚动+背景无限+伪3D动态背景+前景遮挡

ζั͡ ั͡雾 ั͡狼 ั͡✾ 2023-04-04 原文

总目录https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482

 效果图如下:

 

教学https://b23.tv/qF8e3sr

1.先在背景空物体下拖入所需要的空物体,并添加Sprite渲染器,将图片放入里面(也可以直接拖动精灵图作为背景空物体子物体,会自动完成渲染器添加)

注意调整好各个背景的遮盖关系

我的一些图层顺序排序

注意需要将这些子物体的绘制模式全改成平铺,这样修改它的宽度后会自动贴下一张图片。宽度要设置成大于本来宽度的三倍以上(如果不这样,在后面脚本完成的时候,当角色移动超过背景的时候会瞬间填充移动,宽度过小的时候移动会直接闪现在屏幕上,而我们需要在屏幕外刷新背景

 2.为各个子物体添加BgkControl脚本

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

public class BgkControl : MonoBehaviour
{


    //摄像机
    private Transform cameraT;//前一帧摄像机位置
    private Vector3 lastCameraPoi;//后一帧摄像机位置

    //子物体移动倍速
    public Vector2 SpeedTime = new Vector2(1f,1f);

    //纹理图宽度
    private float textUnitSizex;//textUnitSizex


    // Start is called before the first frame update
    void Start()
    {

        cameraT = Camera.main.transform;
        lastCameraPoi = cameraT.position;
        //获取纹理图及宽度

            Sprite sprite = transform.GetComponent<SpriteRenderer>().sprite;
            Texture2D texture = sprite.texture;
            textUnitSizex = texture.width / sprite.pixelsPerUnit;//纹理图宽度除像素宽度

    }

    // Update is called once per frame
    void Update()
    {
        Vector3 delMovement = cameraT.position - lastCameraPoi;
        transform. position += new Vector3(delMovement.x * SpeedTime.x,delMovement.y* SpeedTime.y,0);

        lastCameraPoi = cameraT.position;//更新后一帧摄像机位置

        //背景图无限

            if (Mathf.Abs(cameraT.position.x - transform.position.x )> textUnitSizex)
            {
                //偏移量
                float offsetPositionX = (cameraT.position.x - transform.position.x)%textUnitSizex;
                //移动背景图
                transform.position = new Vector3(cameraT.position.x+ offsetPositionX, transform.position.y);
            
            }
    }
}

为每个物体加好小本之后就可以在unity中每个物体下面脚本下面改成自己的x,y倍速。一般而言,远处物体的x倍速为0-0.2之间(云,雾),中间物体x倍速在0.2-0.4之间(山),近物体倍速在0.4-0.6之间(树木),前景物体(遮挡角色的背景)移动与摄像机移动方向相反,且距离最近x倍速在(-1.5到-2之间)。y倍速越远的物体越大,越近的物体越小,可以形成一种让上跳之后显现后面物体的效果(前景为负值)

这样就完成了!!!

下一篇

bnhe9.Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不受攻击检测标签,加上触发器,加上触发器脚本。 在主角到该范围内,敌人开始攻击,加入脚本EnemyAttackBox。在1中已经增加了主角受伤动画,现在优化攻击判定的代码,使得敌人也可以使用脚本。。。......https://wulang.blog.csdn.net/article/details/125713329?spm=1001.2014.3001.5502

有关8.Unity2D 横版 视差滚动+背景无限+伪3D动态背景+前景遮挡的更多相关文章

  1. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  2. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  3. ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题 - 2

    我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  7. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  8. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  9. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  10. ruby - 在 Ruby 中动态创建数组 - 2

    有没有办法在Ruby中动态创建数组?例如,假设我想遍历用户输入的书籍数组:books=gets.chomp用户输入:"TheGreatGatsby,CrimeandPunishment,Dracula,Fahrenheit451,PrideandPrejudice,SenseandSensibility,Slaughterhouse-Five,TheAdventuresofHuckleberryFinn"我把它变成一个数组:books_array=books.split(",")现在,对于用户输入的每一本书,我想用Ruby创建一个数组。伪代码来做到这一点:x=0books_array.

随机推荐