![](https://file.jishuzhan.net/article/1727854948013576193/0aa26aecd3fa3d966db366034fab527f.webp)
引言
Cocos中物体围绕物体做圆周运动。
不管是2D 还是3D 游戏,旋转 是游戏中常见的操作之一,它可以用来改变 游戏对象的方向、角度或者位置,从而创造出更加生动和有趣的游戏体验。
本文将介绍一下如何实现王者荣耀中东皇太一的技能环绕效果。
本文源码和源工程在文末获取,小伙伴们自行前往。
1.旋转的基本概念
在游戏中,旋转是指围绕某个中心点或轴心旋转游戏对象。
旋转通常包括两个重要的概念:角度(Rotation)和轴(Axis) 。角度 决定了旋转的幅度 ,而轴 定义了旋转的方向 。
话不多说,一起来做个实例。
2.物体环绕物体
接下来我们一步一步来实现王者荣耀中东皇太一的技能环绕效果。
1.环境
引擎版本:Cocos Creator 3.8.1
编程语言:TypeScript
2.资源准备
首先给小鸡 的中心加一个target
节点,作为被环绕的中心。
![](https://file.jishuzhan.net/article/1727854948013576193/86031d8afdc672d8209fd73924a0bafa.webp)
然后创建一个CubeCreator
生成器和一个Cube
预制挂载。
![](https://file.jishuzhan.net/article/1727854948013576193/79d15ec6e3434037183bd59f938d8029.webp)
CubeCreator
生成器挂载CubeCreator
脚本。
![](https://file.jishuzhan.net/article/1727854948013576193/155b3df20c1596040d9c0e4472346608.webp)
Cube
预制挂载RotateAroundObject
脚本。
![](https://file.jishuzhan.net/article/1727854948013576193/53416ba583c18ab2f325798f880eed96.webp)
3.CubeCreator
首先定义CubeCreator
组件,生成用于演示用的可被拾取的砖块。
![](https://file.jishuzhan.net/article/1727854948013576193/e0fae0a15d794bd396dc317551d6f48b.webp)
首先通过预制创建4x4个cube
,并且通过材质球material.setProperty('mainColor')
去修改他们的颜色,颜色随机 ,加到cubes
数组进行管理。
![](https://file.jishuzhan.net/article/1727854948013576193/7e8365216e7326e86f93300bed50ff4e.webp)
然后监听一下键盘事件,简单用空格键将砖块打出去。
![](https://file.jishuzhan.net/article/1727854948013576193/dd8d8c35dca92669fa462d659936a031.webp)
4.RotateAroundObject
![](https://file.jishuzhan.net/article/1727854948013576193/c063239665702eb66b6d23d58234c398.webp)
首先定义一个RotateAroundObject
组件,声明一些物体环绕物体 需要的一些基本属性,包括
- 环绕目标
object
- 公转半径
orbitRadius
- 公转速度
rotationSpeedT
- 倾角
inclination
- 其中倾角通过随机
Math.random()
产生,形成不同的环绕方向。
![](https://file.jishuzhan.net/article/1727854948013576193/34a8b22978c2687d5f805e98d7c3cbbe.webp)
然后update
中实现一下物体物体环绕效果。其中需要用到数学知识球坐标系 以及球坐标转换。
![](https://file.jishuzhan.net/article/1727854948013576193/5990da0bb5d41aeaa94615829be363ad.webp)
获取目标的世界坐标 ,通过球坐标公式 计算出并更新设置实际坐标。
![](https://file.jishuzhan.net/article/1727854948013576193/fbac896569bfa710482233a7e01a4be8.webp)
每帧增加角度,实现动态效果。
![](https://file.jishuzhan.net/article/1727854948013576193/6977269ae02b5162238ffcd80e45e642.webp)
拾取效果 ,当小鸡和砖块的距离小于0.5时,进行拾取并环绕。
![](https://file.jishuzhan.net/article/1727854948013576193/f22b8a6dd0ea8987abdccd073f24e25e.webp)
距离公式。
![](https://file.jishuzhan.net/article/1727854948013576193/89396066bca63a6c00881175abdc88df.webp)
当按下空格键时,把砖块打出去。
![](https://file.jishuzhan.net/article/1727854948013576193/5783713587c4f6d284bc92065e5796c1.webp)
- 首先设置砖块的朝向和小鸡一致。
- 然后简单添加一个
RigidBody
组件用于运动。 - 设置
rigidBody.useGravity = false
取消重力。 - 最后通过
rigidBody.applyForce
产生动力。
5.结果演示
![](https://file.jishuzhan.net/article/1727854948013576193/0aa26aecd3fa3d966db366034fab527f.webp)
结语
在哪里 可以看到如此清晰的思路,快跟上我的节奏!关注我 ,和我一起了解 游戏行业最新动态,学习游戏开发技巧。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。
实不相瞒,想要个赞 和在看 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏:
本文源码和源工程 可通过发送私信RotationDemo获取