根据角度和距离生成游戏物体(以圆心向圆圈线上生成物体)
2015-08-21 16:37
295 查看
假设我们需要在一个物体周围生成一些小装饰品, 比如以物体A半径5的圆圈线上生成一些宝箱等等,。
我们先看看如何计算物体x,y坐标的公式:
不理解上面的公式也无妨,需要的时候拷贝即可.我们来看看生成盘香和整体代码
生成一个圆
生成一个盘香
我们先看看如何计算物体x,y坐标的公式:
//根据原点,角度,半径获取物体的位置. //x = 原点x + 半径 * 邻边除以斜边的比例, 邻边除以斜边的比例 = cos(弧度) , 弧度 = 角度 *3.14f / 180f; float x = centerPos.x + radius * Mathf.Cos (angle * 3.14f / 180f); float y = centerPos.y + radius * Mathf.Sin (angle * 3.14f / 180f);
不理解上面的公式也无妨,需要的时候拷贝即可.我们来看看生成盘香和整体代码
using UnityEngine;
using System.Collections;
public class CreateGameObject : MonoBehaviour {
private Vector3 centerPos; //圆心的位置
private float radius = 5; //半径
private float angle = 0; //角度
public GameObject cube;
// Use this for initialization
void Start () {
CreateMosquitoCoil ();
}
public void CreateCubeAngle30()
{
centerPos = transform.position;
//每隔30度就生成一个小方块
for (angle = 0; angle < 360; angle+=30) {
//根据原点,角度,半径获取物体的位置. //x = 原点x + 半径 * 邻边除以斜边的比例, 邻边除以斜边的比例 = cos(弧度) , 弧度 = 角度 *3.14f / 180f; float x = centerPos.x + radius * Mathf.Cos (angle * 3.14f / 180f); float y = centerPos.y + radius * Mathf.Sin (angle * 3.14f / 180f);
//生成一个方块
GameObject obj = (GameObject)GameObject.Instantiate (cube, new Vector3 (x, y, centerPos.z), Quaternion.identity);
}
}
//生成蚊香
public void CreateMosquitoCoil()
{
centerPos = transform.position;
//每隔30度就生成一个小方块
for (int i = 0; i < 30; angle+=20,radius+=0.3f,i++) {
//根据原点,角度,半径获取物体的位置. x = 原点x + 半径 * 邻边除以斜边的比例
float x = centerPos.x + radius * Mathf.Cos (angle * 3.14f / 180f);
float y = centerPos.y + radius * Mathf.Sin (angle * 3.14f / 180f);
//生成一个方块
GameObject obj = (GameObject)GameObject.Instantiate (cube, new Vector3 (x, y, centerPos.z), Quaternion.identity);
}
}
}
生成一个圆
生成一个盘香
相关文章推荐
- UIPanGestureRecognizer类中translationInView
- SA8000认证益处
- C++对象模型
- c++对象内存模型【内存布局】
- 设计模式(java) 单例模式 单例类
- 【leetcode】 257. Binary Tree Path
- 【网络编程】之九、事件选择WSAEventSelect
- IOS_简单地页面跳转以及NSNotificationCenter(通知中
- UI设计基础百科
- 编写高质量代码改善C#程序的157个建议——建议108:将类型标识为sealed
- 设计模式(java) 单例模式 单例类
- LeetCode OJ -- Binary Tree Paths
- 使用hexo再github上搭建一个博客教程
- 在Ubuntu系统上安装Nginx服务器的简单方法
- 抢红包源码
- 关于P2P打洞
- 【网络编程】之八、异步选择WSAAsyncSelect
- POJ 2240 Arbitrage floyd
- 数组常用的方法
- jquery :checked(过滤选择器) 和 空格:checked(后代选择器)