zoukankan      html  css  js  c++  java
  • 根据角度和距离生成游戏物体(以圆心向圆圈线上生成物体)

    假设我们需要在一个物体周围生成一些小装饰品, 比如以物体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

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    关于virtual、非virtual继承函数的调用
    关于文件操作的文件格式与打开方式
    C++ 文件读写操作
    C++语法题
    检测java string变量是否含有中文
    常用知识库
    WMS仓储管理系统
    运输管理
    ipconfig/flushdns 清除系统DNS缓存
    cmd查看域名账号相关的命令
  • 原文地址:https://www.cnblogs.com/plateFace/p/4748284.html
Copyright © 2011-2022 走看看