当前位置: 首页 > news >正文

Unity 滚动球游戏(二)

一、项目回顾

在上篇文章中,已经完成了场景搭建,主要包括一个平面Plane,四个cube组成的围挡,并对摄像机的位置进行了设置,保证能够在游戏视图中完整显示场景。
具体可自行查阅:场景搭建
本篇将继续创建游戏物体,包括多个cube,并通过脚本实现游戏物体的旋转。

二、创建游戏物体

1.创建Cube对象,并设置其位置、大小、材质、摆放角度。


位置:设置位置坐标为(0,0,0),观察其位置,会发现有一半隐藏在平面Plane之下,此时需要调整Y轴方向,使其处于平面Plane之上,可以设置(0,0.5,0)。


大小:创建cube后,如果觉得大小不合适,可进一步调整Transform组件里的缩放属性,默认是(1,1,1),保持原样。小于1表示缩小,大于1表示放大,可以只在某个方向上进行缩放。
材质:与Plane一样,也可以为游戏物体创建材质,设置其颜色。
在Assets文件夹中,找到Materials文件夹,右键选择“创建”->“材质”,将其命名为“游戏物体材质”。随后,在右侧的检查器面板中设置其反射率属性。最后,将该材质拖拽或分配给Cube,即可在场景视图中看到效果。





摆放角度:摆放角度可以通过物体的旋转属性设置,分别设置每一个轴的旋转角度。这里设置(-35,0,45)。如果发现旋转之后部分进入Plane以下,可继续调整物体位置,可以尝试(0,0.8,0)。

2.依次复制多个,摆放在不同位置。

复制多个,分别放置不同位置,同样的,可以新建一个空对象,使所有的cube成为其子对象,方便管理。

设置游戏物体旋转角度时,需要确定旋转的轴或者中心点,这需要格外说明Unity提供的中心(center)和轴心(pivot)
轴心(pivot):模型的轴心,建立模型时候确定,可以在建模软件中更改;物体自身平移旋转时候围绕Pivot进行平移旋转的;
中心(center):unity计算mesh的中心得到的中心位置;可以计算一个物体,也可以计算多个物体打得的中心。选中多个物体则围绕整体center进行旋转。如选中多个物体同时旋转使用的就是中心(center)。

三、游戏物体旋转

1.新建脚本RotateControl.cs

依次Assets文件夹新建子文件夹Scripts,在其中新建脚本RotateControl.cs,并打开。

2.物体旋转编程控制

想要物体旋转,Unity提供了RotateAround(Vector3 point, Vector3 axis, float angle)方法,其实现的功能是使物体围绕穿过point点的axis轴旋转angle角度
如果放置在Update函数中,则表示每一次刷新都会执行此功能。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateControl : MonoBehaviour { public float speed; //设置旋转的速度,在Unity中初始化 void Start() { } // Update is called once per frame void Update() { //调用RotateAround()函数,参数分别为物体的位置坐标,Y轴,旋转的速度 transform.RotateAround(transform.position, Vector3.up, Time.deltaTime * speed); } }
Time.deltaTime含义: 官方手册中说明:这个变量是按秒为单位,完成上一帧所用的时间。 在设置旋转或移动速度的时候,乘以此值为为了保证不同刷新率下,游戏物体1秒变化的程度是一致的。 比如60Hz的话,1秒刷60帧,也就是Update运行了60次,那么deltaTime=1/60,那么物体1秒旋转的角度为1/60*speed*60=speed; 同理:0Hz的话,1秒刷60帧,也就是Update运行了60次,那么deltaTime=1/60,那么物体1秒旋转的角度为1/60*speed*60=speed;
3.放置脚本并设置speed初始值

4.保存并运行程序查看效果


如果效果不明显,可以设置speed更大的值,比如100。

http://www.jsqmd.com/news/952894/

相关文章:

  • 快速验证物联网想法:用快马一键生成esp8266 wifi连接原型代码
  • Navicat连Oracle 11g报错ORA-28547?别慌,手把手教你替换oci.dll文件搞定
  • 实战派数据库解决方案,快马ai一键生成企业级管理应用,替代navicat
  • PPS文件怎么改内容?两种实用实操方法
  • TradingAgents 新手快速上手指南
  • Git开发必备技能:从单机笔记到多人协作的版本控制实战
  • SIMULINK仿真结果导出与绘图避坑指南:To Workspace设置、时间轴对齐与双坐标轴处理
  • JiYuTrainer技术实现:Windows教学管理系统行为调整工具的技术架构与应用指南
  • 抖音开放平台获取用户手机号,Java解密实战(附完整代码与避坑点)
  • AI Agent 全栈落地精讲:从技术演进到金融企业级实战,零基础程序员转行必看
  • 重要任务-----制作30个介绍APP主要功能的视频
  • PaLM-E:具身智能的端到端多模态统一认知架构
  • 论文创新点怎么“创”?五大方法助你突破创新难关(附提示词)
  • 产教融合视域下 MITCON 网络安全培训项目实践与反钓鱼防御落地研究
  • 稀土功能高分子在涂层涂料领域的应用浅析
  • 别再只写界面了!用Qt6+Modbus快速打造一个工业上位机监控软件(实战篇)
  • iOS 开发面试 50 个高频易混淆知识点详解
  • 2026年热门的电商产业园区/宁波电商产业园区推荐榜单 - 品牌宣传支持者
  • 从游戏地形到有限元分析:深入理解Delaunay三角剖分的‘空圆’特性为什么这么重要
  • 用快马平台快速生成交互式广告原型,十分钟搞定创意验证
  • 【AI审核落地实战指南】:2023年企业智能审核系统集成的7大避坑法则与3套可复用架构模板
  • 从SJA1000到现代MCU:聊聊CAN控制器硬件架构的演变与选型
  • 测试质量进阶个人笔记--7测试执行与缺陷管理
  • 搞地图开发必懂的坐标系‘黑话’:WGS84、GCJ02、BD09、CGCS2000到底啥关系?
  • 除了Java,用Python/Node.js也能解密抖音用户手机号?
  • Day 1 :项目全景 + 第一条完整后端链路
  • 别再误解S参数和驻波了!用四臂螺旋天线功分网络讲透射频匹配的本质
  • 2026年热门的一站式电商园区/小商品货源园区优选榜单 - 行业平台推荐
  • 避开Matlab机械臂仿真的那些坑:Robotic Toolbox建模与逆解算实战避坑指南
  • 别再只盯着特征值了!用Python和NumPy玩转‘矩阵束’,解决广义特征值问题