版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号:umaketop
  • 您可以自由转载,但必须加入完整的版权声明

目标:

  • 砖块的创建
  • 砖块在游戏运行中生成
  • 砖塔的创建及旋转
  • 砖塔的动态上升

砖块的创建

  • 首先我们先创建一个Cube重命名为CubeBrick并把他的位置Reset一下,并把砖块调整至合适大小,并把材质调整至自己喜欢的颜色,然后我们把CubeBrick保存为预制体即可
  • 然后依照上面的步骤创建一个Cylinder重命名为CylinderBrick并保存。
  • 这样就能得到我们需要的两个砖块了

砖块在游戏运行中生成

  • 首先打开我们之前制作的PlatformRig预制体并在子集添加一个空的GameObject重命名为Tower并Reset坐标,如下图所示



    然后在我们的Scripts文件夹下新建一个名为Tower的脚本,并把脚本拖给Tower且打开脚本编写如下的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Tower : MonoBehaviour
{
public int height; // 砖塔的层高
public Color[] colors = new Color[2];
public GameObject brickPrefab; // Start is called before the first frame update
void Start()
{
// 动态生成这些砖块(从砖块预制体)
for (int i = 0; i < height; i++)
{
GameObject goBrick = Instantiate(brickPrefab); goBrick.transform.SetParent(this.transform, false); goBrick.GetComponent<MeshRenderer>().material.color = colors[i % 2];
} } // Update is called once per frame
void Update()
{ }
}
  • 并把脚本中定义为Public的变量更改为以下数据即可

砖塔的创建及旋转

  • 打开我们的Tower脚本并把代码更改为以下所示
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Tower : MonoBehaviour
{
public int height; // 砖塔的层高
public Color[] colors = new Color[2];
public GameObject brickPrefab; // Start is called before the first frame update
void Start()
{
// 动态生成这些砖块(从砖块预制体)
for (int i = 0; i < height; i++)
{
GameObject goBrick = Instantiate(brickPrefab); // TODO: 让每一层砖块的高度都不一样!
goBrick.transform.Translate(0, i, 0, Space.Self); // 移动一个单位 goBrick.transform.Rotate(0, 10*i, 0, Space.Self); goBrick.transform.SetParent(this.transform, false); // 由于Level本身带缩放,所以实际放到Tower下面后,仅平移了i*0.25个单位 goBrick.GetComponent<MeshRenderer>().material.color = colors[i % 2];
} } // Update is called once per frame
void Update()
{
this.transform.Rotate(0, 45 * Time.deltaTime, 0);
}
}
  • 然后保存并运行我们的游戏就能看到砖塔的生成和旋转了

砖塔的动态上升

  • 首先还是先打开我们的Tower脚本然后添加以下的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Tower : MonoBehaviour
{
public int height; // 砖塔的层高
public Color[] colors = new Color[2];
public GameObject brickPrefab; // Start is called before the first frame update
void Start()
{
// 动态生成这些砖块(从砖块预制体)
for (int i = 0; i < height; i++)
{
GameObject goBrick = Instantiate(brickPrefab); // TODO: 让每一层砖块的高度都不一样!
goBrick.transform.Translate(0, i, 0, Space.Self); // 移动一个单位 goBrick.transform.Rotate(0, 10*i, 0, Space.Self); goBrick.transform.SetParent(this.transform, false); // 由于Level本身带缩放,所以实际放到Tower下面后,仅平移了i*0.25个单位 goBrick.GetComponent<MeshRenderer>().material.color = colors[i % 2];
} StartCoroutine(RiseUpFromUnderground());
} IEnumerator RiseUpFromUnderground()
{
// 将塔先放置在地下
this.transform.Translate(0, -height * transform.lossyScale.y, 0, Space.Self);
// 定时往上跑一定距离
while (this.transform.position.y < 0.5 * transform.lossyScale.y)
{
this.transform.Translate(0, 5 * Time.deltaTime, 0, Space.Self);
yield return null;
}
} // Update is called once per frame
void Update()
{
this.transform.Rotate(0, 45 * Time.deltaTime, 0);
}
}
  • 保存后运行游戏即可看到我们的砖塔从下往上升的效果了。

Fire Balls 04——砖塔的创建,动态上升以及旋转的更多相关文章

  1. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

  2. 基于ceph rbd 在kubernetes harbor 空间下创建动态存储

    [root@bs-k8s-ceph ~]# ceph osd pool create harbor 128 Error ETIMEDOUT: crush test failed with -110: ...

  3. GifShot - 创建动态 GIF 的 JavaScript 库

    GifShot 是一个可以创建流媒体,视频或图像的 GIF 动画的 JavaScript 库.该库的客户端特性使其非常便携,易于集成到几乎任何网站.利用最先进的浏览器 API ,包括 WebRTC , ...

  4. Unity3D 创建动态的立方体图系统

    Unity3D 创建动态的立方体图系统 这一篇主要是利用上一篇的Shader,通过脚本来完成一个动态的立方体图变化系统. 准备工作如下: 创建一个新的场景.一个球体.提供给场景一个平行光,准备2个立方 ...

  5. Ribbon2: 创建动态的Ribbon库

    Sam Radakovitz曾在Excel团队博客中发表过一篇文章,介绍了如何创建动态的Ribbon库,即如何通过RibbonX和VBA放置动态的图形图像到功能区库中,在该文中,作者创建了两个库:一个 ...

  6. 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI

    原文:[ASP.NET Web API教程]2.3.5 用Knockout.js创建动态UI 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容 ...

  7. 使用Eclipse创建动态的web工程

    使用Eclipse创建动态的web工程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改工作区的编码 1>.点击Window选择Preferences 2>.将默 ...

  8. Ubuntu18.04下给PyCharm创建快捷方式

    Ubuntu18.04下给PyCharm创建快捷方式 该方法 WebStorm.PyCharm.Clion 等都适用. 步骤 终端输入: sudo gedit /usr/share/applicati ...

  9. Spring BPP中优雅的创建动态代理Bean

    一.前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean.通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFact ...

随机推荐

  1. C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它。

    delegate void 委托名(方法名); void 方法名() { if(txtBox.invokeRequered) { 委托名 d=new 委托名(); txtBox.invoke(d); ...

  2. 推荐:经典SQL语句大全

    一.基础 .说明:备份sql server--- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mss ...

  3. PHP--数据库访问(增、删、改、查)

    练习通过数据库查询一个表,操作这个表的增.删.改.查的功能! 一.主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...

  4. 备战金九银十,Java研发面试题(Spring、MySQL、JVM、Mybatis、Redis、Tomcat)[带答案],刷起来!

    八月在即,马上就是"金九银十",又是跳槽招聘季.咱们这行公认涨薪不如跳槽加的快.但不建议频繁跳槽,还是要学会融合团队,抓住每个机会提升技能. 苏先生在这里给大家整理了一套各大互联网 ...

  5. PHP与ECMAScript_1_变量与常量

    PHP ECMAScript 变量命名规则 (相同点) 变量包含:字母.数字.下划线字符 变量只能以字母或下划线开头 变量不能以数字开头 变量名是区分大小写 变量包含:字母.数字.下划线字符 变量只能 ...

  6. 输出单链表倒数第K个结点值

    #include<iostream>using namespace std;#include<malloc.h>#include<stdio.h>typedef i ...

  7. ruby镜像报错,compass安装报错

    在这几天在电脑上安装compass一直报错,很无语.因为安装的ruby和sass都没有问题,虽然是很久之前安装的.   sass # 更新sass gem update sass   # 检查sass ...

  8. 【iOS】安装 CocoaPods

    1. 打开 terminal 2. 移除现有 Ruby 默认源 $ gem sources --remove https://rubygems.org/ 3. 使用新的源 $ gem sources ...

  9. go杂货铺

    json序列化 内存中变成可存储或传输的过程称之为序列化(dict,split,struct转string) package main import ( "encoding/json&quo ...

  10. Hadoop 系列(三)—— 分布式计算框架 MapReduce

    一.MapReduce概述 Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序.编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集. MapReduce ...