Unity经典案例之:Fire Balls 多个圆环以及圆环的变速变向

2023-10-09 23:50

本文主要是介绍Unity经典案例之:Fire Balls 多个圆环以及圆环的变速变向,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版权申明:

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

目标

730245-20190822091113425-1674981148.gif

  • 使用脚本创建不同大小的圆环
  • 使用脚本创建多个圆环
  • 改变其速度与方向

创建不同大小的圆环

  • 我们先在场景里面新建一个GameObject重命名为Disc,把坐标设置到原点(0,0,0),并把Platform底下的脚本去掉,加入到Disc下面,并把Platform脚本打开重命名为Disc,选中创建圆环的代码,并把它提取出来,提取方法的操作如下图所示:
    • 选中要提取方法的代码段
    • 此时会看见弹出一个方块
    • 点击方块,选择“提取方法”菜单项
      730245-20190822091127673-1174025140.png
  • 提取出来后重命名为CreatArch(方便以后打开项目看到后不会忘记),并把代码修改如下所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.ProBuilder;public class Disc : MonoBehaviour
{public Material mat;//圆环的材质public Transform xRig;//// Start is called before the first frame updatevoid Star(){CreatArch(8,Random.Range(20,80),0);}/// <summary>/// 创建一个任意大小的圆环/// </summary>/// <param name="radius">半径</param>/// <param name="deg">角度</param>/// <param name="rot">初始旋转(绕y轴)</param>private void CreatArch(int radius, int deg, int rot){//创建圆环ProBuilderMesh pbMesh = ShapeGenerator.GenerateArch(PivotLocation.FirstVertex,  deg, radius, 0.5f, 1, 20, true, true, true, true, true);pbMesh.GetComponent<MeshRenderer>().material = mat;//使圆环平躺pbMesh.transform.Rotate(-90, 0, 0);//设置圆环的父节点,使其绕着父节点公转(父节点默认创建在原点)xRig = new GameObject("xRig").transform;pbMesh.transform.SetParent(xRig,false);xRig.SetParent(this.transform,false);}// Update is called once per framevoid Update(){xRig.Rotate(0, 1, 0);}
}

创建多个圆环

打开Disc脚本,并编写更改代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.ProBuilder;public class Disc : MonoBehaviour
{public Material mat;//圆环的材质public int ArchNum = 3;// Start is called before the first frame updatevoid Star(){for(int i = 0;i<ArchNum;i++){int avgDeg = 360/ArchNum;//每个圆环占的角度CreatArch(8,Random.Range(20,80),i*avgDeg);//携程StartCoroutine(ChangeSpeed());}}IEnumerator ChangeSpeed(){while (true){yield return new WaitForSeconds(Random.Range(1f, 3f));rotSpeed = Random.Range(-120, 120);}}/// <summary>/// 创建一个任意大小的圆环/// </summary>/// <param name="radius">半径</param>/// <param name="deg">角度</param>/// <param name="rot">初始旋转(绕y轴)</param>private void CreatArch(int radius, int deg, int rot){//创建圆环ProBuilderMesh pbMesh = ShapeGenerator.GenerateArch(PivotLocation.FirstVertex,  deg, radius, 0.5f, 1, 20, true, true, true, true, true);pbMesh.GetComponent<MeshRenderer>().material = mat;//使圆环平躺pbMesh.transform.Rotate(-90, 0, 0);//设置圆环的父节点,使其绕着父节点公转(父节点默认创建在原点)Transform xRig = new GameObject("xRig").transform;pbMesh.transform.SetParent(xRig,false);//设置圆环初始在圆盘的旋转角度xRig.Rotate(0,rot,0);Transform yRig = new GameObject("yRig").transform;xRig.SetParent(yRig,false);yRig.SetParent(this.transform,false)}// Update is called once per framevoid Update(){this.transform.Rotate(0, 1, 0);}
}

这样每次启动游戏我们就能看到场景里有多个圆环了

改变圆环的旋转速度以及方向

打开我们的Disc脚本,并添加一个共有变量名为(float类型)rotSpeed = 90,并修改我们Update里面的代码,然后添加一个携程,如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.ProBuilder;public class Disc : MonoBehaviour
{public Material mat;//圆环的材质public int ArchNum = 3;public float rotSpeed = 90;// Start is called before the first frame updatevoid Star(){for(int i = 0;i<ArchNum;i++){int avgDeg = 360/ArchNum;//每个圆环占的角度CreatArch(8,Random.Range(20,80),i*avgDeg);}}/// <summary>/// 创建一个任意大小的圆环/// </summary>/// <param name="radius">半径</param>/// <param name="deg">角度</param>/// <param name="rot">初始旋转(绕y轴)</param>private void CreatArch(int radius, int deg, int rot){//创建圆环ProBuilderMesh pbMesh = ShapeGenerator.GenerateArch(PivotLocation.FirstVertex,  deg, radius, 0.5f, 1, 20, true, true, true, true, true);pbMesh.GetComponent<MeshRenderer>().material = mat;//使圆环平躺pbMesh.transform.Rotate(-90, 0, 0);//设置圆环的父节点,使其绕着父节点公转(父节点默认创建在原点)Transform xRig = new GameObject("xRig").transform;pbMesh.transform.SetParent(xRig,false);//设置圆环初始在圆盘的旋转角度xRig.Rotate(0,rot,0);Transform yRig = new GameObject("yRig").transform;xRig.SetParent(yRig,false);yRig.SetParent(this.transform,false)}// Update is called once per framevoid Update(){this.transform.Rotate(0, rotSpeed*Time.deltaTime, 0);}
}

转载于:https://www.cnblogs.com/raymondking123/p/11392431.html

这篇关于Unity经典案例之:Fire Balls 多个圆环以及圆环的变速变向的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176424

相关文章

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

MySQL 复合查询案例详解

《MySQL复合查询案例详解》:本文主要介绍MySQL复合查询案例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录基本查询回顾多表笛卡尔积子查询与where子查询多行子查询多列子查询子查询与from总结合并查询(不太重要)union基本查询回顾查询

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl