unity3d循环滑动_Unity3D游戏发开技巧:背景循环滚动

本文介绍了在Unity3D中实现2D游戏背景循环滚动的详细步骤,包括设置平铺背景、获取边界、调整滚动速度,并提供了一个简单的C#脚本来控制背景的移动,当背景移动到边界时进行重置,从而达到循环滚动的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景循环滚动

背景循环滚动是2d游戏制作时经常可能会涉及到的一部分。https://www.zhihu.com/video/1064105089442168832

(因为不是无缝贴图,所以效果一般)

新建2d项目

创建sprite,改名为bg,向SpriteRenderer中的Sprite里拖拽一张你希望作为背景的图。(最好有无缝贴图,这里的图是网上找来的,没有找到合适的无缝贴图。)

将Sprite的DrawMode改为Tiled(平铺),然后调整Width为原来的三倍(方便观察滚动的效果。注意:不改动也可以,下文对应代码中不需要除以3了)。

代码逻辑:

在Start()方法中得到bg的右边界,左边界,和左右边界的距离。

使bg图不断向右移动,当position的x轴坐标到达right点,重置bg图的位置,使position的x轴处于左边界的位置。

不断重复, 达到背景循环滚动的目的。

注意:

1. [Range(0f,1f)] 是将rollSpeed在Inspector面板中设置成滑动条的样式,方便滑动调整滚动速度。

2. bounds是图形的边界框,bounds.extents.x是图形边界框长度一半,position.x+bounds.extents.x也就是right的位置,position.x-bounds.extens.x是left的位置。

代码:

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class bgRoll : MonoBehaviour {

[Range(0f,1f)] //将rollSpeed在Inspector面板中设置成滑动条的样式

public float rollSpeed = 1f;//滚动速度

private float right; //右边界

private float left; //左边界

private float distance; //左右边界距离

// Use this for initialization

void Start () {

//计算左右边界。Bounds是当图形的边界框

SpriteRenderer sRender = GetComponent();

right = transform.position.x + sRender.bounds.extents.x / 3;

left = transform.position.x - sRender.bounds.extents.x / 3;

distance = right - left;//左右边界相减得到距离

}

// Update is called once per frame

void Update () {

//使背景图片向右移动

transform.localPosition+= rollSpeed * Vector3.right * Time.deltaTime;

//判断是否到达右边界

if(transform.position.x > right)

{

//如果到达,将背景图片的位置向后(x轴方向)调整一个背景图片长度的距离

transform.position -= new Vector3(distance, 0, 0);

}

}

}

最后将脚本添加给背景图。

最终效果如文章开头视频所示。

欢迎关注公众号:siki,分享优质课程与众多学习干货,欢迎大家关注留言评论,提出课程建议!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值