Unity实现简单场景分层移动

本文实例为大家分享了Unity实现简单场景分层移动的具体代码,供大家参考,具体内容如下

前言

开发游戏经常需要用到把前景、场景、背景等不同层级的物体进行不同速度的移动以实现真实感。

效果

云、建筑、地面、前景植被各层次场景分层移动。

代码

using UnityEngine;

public class DistantView : MonoBehaviour
{
    public GameObject follow;
    public float scaleOffset;
    public bool isHorizontal = true;
    public bool isVertical = true;
    Vector2 pos;
    Vector2 followPos;
    float offsetX;
    float offsetY;

    private void Start()
    {
        if (follow != null)
            followPos = follow.transform.localPosition;
    }

    void LateUpdate()
    {
        if (follow!=null)
        {
            pos = transform.localPosition;

            if (isHorizontal)
            {
                offsetX = (follow.transform.localPosition.x - followPos.x) * scaleOffset;
                pos.x += offsetX;
            }

            if (isVertical)
            {
                pos.y += offsetY;
                offsetY = (follow.transform.localPosition.y - followPos.y) * scaleOffset;
            }

            transform.localPosition = pos;
            followPos = follow.transform.localPosition;
        }

    }
}

用法

将不同层级的物体放入不同的父物体下分别管理。

给每个父物体挂上脚本。

Follow为跟随的基准对象。(比如玩家,相机等)
ScaleOffset为移动速率,1为和目标移速一致,越小越慢,越大越快。0为不移动,负值为反向移动。(前景可能要用到负值)
Hor和Ver为跟随哪个轴。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity实现主角移动与摄像机跟随

    在游戏开发中,主角需要通过跑地图来通关升级,本章主要介绍主角的移动和摄像跟随的操作. 主角移动 角色位移通过主角的骨骼动画控制(后续文章会详细介绍状态机的使用),这里只需要勾选Animator动画控制器下Apply Root Motion让角色的移动受动画控制. 通过碰撞检测来判断哪些位置主角可以移动,哪些位置角色不能行走,这里需要两个组件Rigidbody刚体,和Collider碰撞组件 Rigidbody:为游戏赋予物理属性,在游戏中只有添加了刚体的物体才能模拟物理属性,如重力等. 如上图所

  • Unity实现物体左右移动效果

    本文实例为大家分享了Unity实现物体左右移动效果的具体代码,供大家参考,具体内容如下 效果如下 代码: using UnityEngine; using System.Collections; //Add this script to the platform you want to move. //左右移动的平台 public class MovingPlatform : MonoBehaviour { //Platform movement speed.平台移动速度 public floa

  • Unity3D实现射线使物体移动

    本文实例为大家分享了Unity3d如何通过射线使物体移动的具体代码,供大家参考,具体内容如下 实现: using System.Collections; using System.Collections.Generic; using UnityEngine; public class RayTest : MonoBehaviour { //设置射线在Plane上的目标点target private Vector3 target; // Use this for initialization vo

  • Unity实现简单场景分层移动

    本文实例为大家分享了Unity实现简单场景分层移动的具体代码,供大家参考,具体内容如下 前言 开发游戏经常需要用到把前景.场景.背景等不同层级的物体进行不同速度的移动以实现真实感. 效果 云.建筑.地面.前景植被各层次场景分层移动. 代码 using UnityEngine; public class DistantView : MonoBehaviour { public GameObject follow; public float scaleOffset; public bool isHo

  • Unity实现简单的虚拟摇杆

    本文实例为大家分享了Unity实现简单虚拟摇杆的具体代码,供大家参考,具体内容如下 需求:点击创建一个虚拟摇杆底盘,鼠标拖拽时候上方摇杆会跟随鼠标方向移动,并且不会超出摇杆盘范围 *摇杆功能另外实现 UI显示 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RockingIcon : MonoBehaviour { public Transform touchP

  • unity实现简单的贪吃蛇游戏

    本文实例为大家分享了unity实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下 SatUIController代码 using UnityEngine; using UnityEngine.UI; public class StartUIController : MonoBehaviour { public Text lastText; public Text bestText; public Toggle blue; public Toggle yellow; public Toggle

  • unity实现简单计算器

    本文实例为大家分享了unity实现简单计算器的具体代码,供大家参考,具体内容如下 using System.Text; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using System; public class Calculator : MonoBehaviour { public Text SpendText; private StringBuilder spendPrice;//初始金额 private str

  • Unity实现简单虚拟摇杆

    本文实例为大家分享了Unity虚拟摇杆的简单实现代码,供大家参考,具体内容如下 简单的Unity虚拟摇杆实现,有详细注释. Game界面 Inspector界面 摇杆脚本 public class YaoGanCtrl : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public RectTransform diPan; public RectTransform anNiu; public Vector2 d

  • Unity实现简单手势识别

    本文实例为大家分享了Unity实现手势识别的具体代码,供大家参考,具体内容如下 代码很简单没有难度,都有注解,随便 看一看 就会了. CallEvent () 方法需要自己搭载使用. Unity代码 using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 手势识别 /// </summary> public class PlayerAnimato

  • Unity实现简单换装系统

    关于Unity的换装,网上有几篇文章,我之前也简单的描述过实现.不过那个时候只是粗略的试验了下.今天好好梳理了下代码. 先上代码(自己的游戏项目,不是公司的,所以放心的贴上项目代码了,部分引用到其他的功能文件,但是核心代码无影响,这里主要看一下细节和思路) using UnityEngine; using System.Collections; using System.Collections.Generic; public enum AvatarPart { helmet, chest, sh

  • unity实现简单贪吃蛇游戏

    本文实例为大家分享了unity实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 首先创建一个头部,编写脚本利用WASD控制头部的移动. Vector3 up=new Vector3(0,1,0); Vector3 down=new Vector3(0,-1,0); Vector3 left=new Vector3(-1,0,0); Vector3 right=new Vector3(1,0,0); Vector3 now;//头部实际前进方向 float timer=0f; float tim

  • Unity实现简单的多人聊天工具

    本文实例为大家分享了Unity实现多人聊天工具的具体代码,供大家参考,具体内容如下 代码1 : 服务端代码 using UnityEngine; using System.Net.Sockets; using System.Net; using System.Threading; public class ChatServer : MonoBehaviour {        // 设置连接端口        const int portNo = 500;        string m_Ser

  • Unity实现简单摇杆的制作

    利用UGUI制作一个简单摇杆,效果图 1.首先建立两个Image,然后将其中一个为父物体,另一个为子物体,并且调整好大小: ps:将子物体的锚点设置为居中 2.在父物体上写个JoyStick.cs脚本: using UnityEngine; using UnityEngine.EventSystems; using System.Collections; public class JoyStick : MonoBehaviour, IDragHandler, IEndDragHandler, I

随机推荐