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

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
    在win10系统下安装和卸载Ubuntu系统(为了搞双系统)的各种办法
    2018 CCPC 中国大学生程序设计竞赛-网络选拔赛 1004(D题 )Find Integer(三角函数+费马大定理)
    HDU(杭州电子科技大学) 2614 Beat (BFS写法)
    SQL server用到的SQL语句备份下
    【SQL Server】SQL触发器经验详解
    SQL SERVER 语句大全
    sqlserver 触发器实例代码
    触发器deleted 表和 inserted 表详解
    SQL server触发器中 update insert delete 分别给写个例子被。
  • 原文地址:https://www.cnblogs.com/plateFace/p/4748284.html
Copyright © 2011-2022 走看看