最近因为要做一个小游戏,要实现用代码创建无限向上延伸的旋转楼梯效果,找遍了网上的逻辑都未曾实现,于是乎自己实现了一个,这里记录一下。有需要的朋友拿走不谢~


效果图:

直接上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public enum StairsDir
{X,Z
}public class StairsManager : MonoBehaviour
{public GameObject cube;StairsDir stairsDir;int yPos = 0;private void Start(){//这里的for循环即可控制旋转楼梯需要往上延伸多高for (int i = 0; i < 4; i++){CreateOneCircleStairs();}}//这里是楼梯旋转一圈的逻辑public void CreateOneCircleStairs(){CreateGroupStairs(StairsDir.X, 0.5f, 10, 1, new Vector3(0, yPos * 5, 0));yPos += 1;CreateGroupStairs(StairsDir.Z, 0.5f, 10, 1, new Vector3(9, yPos * 5, 1));yPos += 1;CreateGroupStairs(StairsDir.X, 0.5f, 10, -1, new Vector3(8, yPos * 5, 10));yPos += 1;CreateGroupStairs(StairsDir.Z, 0.5f, 10, -1, new Vector3(-1, yPos * 5, 9));yPos += 1;}//这里返回列表,是为了能够获取当前一小段楼梯的所有实例化的物体的引用public List<GameObject> CreateGroupStairs(StairsDir stairsDir, float gap,int count,int dir , Vector3 startCreatePos) {List<GameObject> groupStairs = new List<GameObject>();for (int i = 0; i < count; i++){GameObject ccc = (GameObject)Instantiate(cube);switch (stairsDir){case StairsDir.X:ccc.transform.position = new Vector3(i * dir, i * gap, 0)+startCreatePos;break;case StairsDir.Z:ccc.transform.position = new Vector3(0, i * gap, i * dir) + startCreatePos;break;}groupStairs.Add(ccc);}return groupStairs;}
}

直接把此代码放到任何一个空物体上,然后拖入单个楼梯预制体。当然咯,里面的参数需要根据你项目的楼梯尺寸进行改变,大体逻辑是这样的。不过这里我没有考虑性能的问题,大家可以自行修改!

记录一个在Unity中实现生成无限向上旋转楼梯效果相关推荐

  1. 【SwiftUI模块】0018、SwiftUI搭建一个类似支付宝中的余额宝余额数字动画效果

    SwiftUI模块系列 - 已更新18篇 SwiftUI项目 - 已更新1个项目 往期Demo源码下载 技术:SwiftUI.SwiftUI3.0.支付宝.余额宝.数字动画 运行环境: SwiftUI ...

  2. 小记~随笔[记录一个Matlab的中的一个错误]

    记录一个Matlab的错误 导语 : 今天打开了Matlab , 在初始化完毕后出现了一个报错 , 通过回忆之前的操作我解决了这个问题. 并产生了一些思考. 这篇属于随笔类的文章 , 文笔散乱 , 想 ...

  3. Unity中的关节组件和绳子效果的实现

    前言 在Unity中可以使用Joint(关节)来实现绳子的效果. Joint属于Unity里面的一种物理组件,是模拟物体与物体之间的一种连接关系,有以下几种类型:Hinge Joint(链条连接),F ...

  4. python随机生成一个日期_Python中随机生成未来一个月内的一个随机的日期时间

    该函数可以产生从当前日期时间开始到未来一个月内的一个固定时间 import random import timeit import time import datetime #该函数随机生成未来一个月 ...

  5. 记录一个crontab的中使用python脚本的坑

    2019独角兽企业重金招聘Python工程师标准>>> 问题表现: 每次手动执行这个python脚本运行,程序工作的很好,但是如果是通过crontab的方式来运行,就会有各种问题! ...

  6. 记录一个在latex中使文章段落中每行两端对齐的方法

    开头加载如下包 \usepackage{ragged2e} 需要对齐的段落之上使用如下命令 \justifying 举例,如下: \usepackage{ragged2e} 标题 \justifyin ...

  7. 在unity中使用EasyAR插件实现AR效果

    1.在EasyAR官网注册账号:https://www.easyar.cn/,然后进入自己的账号,去获取一个密钥 2.填写一些必要信息,点击确认即可获取密钥,然后查看自己新建的密钥 查看密钥 注:如果 ...

  8. Unity中实现3D人物残影效果

    一:效果演示 二:思路 --使用SkinnedMeshRenderer类中的BakeMesh方法去复制出新的Mesh --再使用Graphics.DrawMesh绘制会Mesh 三:核心代码实现 -- ...

  9. Unity中使用Post Processing 开自发光效果

    正常设置步骤 1.项目中导入Post Processing插件 2.在Camera上添加 Post-process Layer 组件,选择Trigger为当前相机,Layer选择PostProcess ...

最新文章

  1. java图片序列化_Java中的强大武器——对象的序列化
  2. Flume的安装与配置
  3. 七夕|情人节情书指南
  4. 中嵌协会 第1期“嵌入式与物联网”主题论坛将于2010年6月26日在中关村软件园举行...
  5. centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题
  6. jdk1.6 改 jdk1.7或jdk1.8(改回也可以)(图文详解)
  7. android界面的滑动切换功能
  8. H3C S1526交换机端口镜像配置
  9. linux用pe大小做逻辑卷,Linux常用命令之--逻辑卷
  10. 可优比和aag哪个好_2020年儿童床品牌排行榜,如何购买婴儿床?(可优比/思多嘉儿Stokke/好孩子/葛莱Graco)...
  11. centos6.8下安装dc2012
  12. (转)spring boot整合redis
  13. android随机摇号代码,抽奖摇号系统随机性算法介绍
  14. DMS专线联通外网测试
  15. 题目---小Q定义了一种数列称为翻转数列: 给定整数n和m, 满足n能被2m整除。对于一串连续递增整数数列1, 2, 3, 4..., 每隔m个符号翻转一次, 最初符号为'-';。
  16. 【嵌入式开发】监测系统——用QT编写下位机
  17. DOS控制台及其常用命令
  18. 怕你不信,100行极简原生html现实3D雪花飘飘动效
  19. Arduino实验十 利用土壤湿度传感器检测西瓜皮湿度
  20. PS 合并RGB通道 编辑单通道

热门文章

  1. Android Native APP开发笔记:双击返回键退出应用单击返回键返回桌面
  2. vim退出快捷键_vim快捷键汇总
  3. 一篇解单链表(0基础看)(C语言)《数据结构与算法》
  4. 跟益达学Solr5之core.properties配置详解
  5. 卷积神经网络——Alexnet8网络结构及python实现
  6. 小米如何升级android版本升级提示,小米MIUI8怎么升级 5种MIUI 8系统升级方法
  7. 游戏开发用UE、Unity,还是免费、开源引擎?
  8. 华为matebook升级鸿蒙,华为多款App为迎接鸿蒙系统开启众测 曝华为MateBook16笔记本5月发布...
  9. win7 家庭组连接 使用用户账号和密码连接到其他计算机,Windows家庭组访问的账户控制/使用问题...
  10. 水果店水果的保存方法,水果店的水果应该怎么保存