根据角度和距离生成游戏物体(以圆心向圆圈线上生成物体)

假设我们需要在一个物体周围生成一些小装饰品, 比如以物体A半径5的圆圈线上生成一些宝箱等等,。

我们先看看如何计算物体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);
        }
    }
}

 

生成一个圆

image

生成一个盘香

YUOUYJRZU$Y3LX03R{7L6GU

转载于:https://www.cnblogs.com/plateFace/p/4748284.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值