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

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    django开发之model篇-Field类型讲解
    Scrapy+Chromium+代理+selenium
    如何在 CentOS 7 上安装 Python 3
    分享几个简单的技巧让你的 vue.js 代码更优雅
    如何用纯 CSS 创作一副国际象棋
    如何用纯 CSS 创作一个文本淡入淡出的 loader 动画
    Java8中数据流的使用
    SpringBoot中使用mybatis-generator自动生产
    Git 同时与多个远程库互相同步
    记录Java中对url中的参数进行编码
  • 原文地址:https://www.cnblogs.com/plateFace/p/4748284.html
Copyright © 2011-2022 走看看