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

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    js中this.index使用
    js中index()的四种经典用法(转https://blog.csdn.net/superit401/article/details/51726826)
    splice()的用法
    $().click()和$(document).on('click','要选择的元素',function(){})的不同(转https://www.cnblogs.com/sqh17/p/7746418.html)
    transform(转https://blog.csdn.net/qq_24189933/article/details/79293870)
    transition 带的参数什么意思
    最后一次作业----------课程总结
    实训作业---I/O流
    第五次实训
    。。。
  • 原文地址:https://www.cnblogs.com/plateFace/p/4748284.html
Copyright © 2011-2022 走看看