文档章节

六边形寻路格子绘制

 江湖令
发布于 07/06 17:43
字数 331
阅读 58
收藏 0
cos

「深度学习福利」大神带你进阶工程师,立即查看>>>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AdventureIsland : MonoBehaviour
{
    static AdventureIsland instante;
    public AdventureGround ground;
    public Transform AdventureGridRoot;

    public int width = 10;
    public int height = 10;
    public string ID;
    public float gridSize = 0.2f;

    public List<AdventureGrid> adventureGrids = new List<AdventureGrid>();
    public static AdventureIsland Instante()
    {
        return instante;
    }
    public void Awake()
    {
        instante = this;
    }
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void RefreshInEditor()
    {
        AdventureGrid[] adventureGrids = GetAdventureGrids();
        foreach(var v in adventureGrids)
        {
            v.RefreshGridInfoInEditor();
        }
    }

    public AdventureGrid[] GetAdventureGrids()
    {
       return AdventureGridRoot.GetComponentsInChildren<AdventureGrid>();
    }

    public Vector3 GetPosByCoordinate(int x, int y)
    {
        float radius = gridSize / 2f;
        float h = radius + radius * Mathf.Sin(Mathf.PI / 6);
        float w = radius * Mathf.Cos(Mathf.PI / 6);
        float left = -width * w;
        float top = height * h / 2f;
        return new Vector3(left + w * x * 2 + y % 2 * w, 0, top - h * y);
    }

    public Point GetCoordinateByPos(Vector3 pos)
    {
        float radius = gridSize / 2f;
        float w = radius * Mathf.Cos(Mathf.PI / 6);
        float h = radius + radius * Mathf.Sin(Mathf.PI / 6);
        float left = -width * w;
        float top = height * h / 2f;

        int j = Mathf.RoundToInt((top - pos.z) / h);
        int i = Mathf.RoundToInt((pos.x - left - j % 2 * w) / (w * 2));
        return new Point { x = i, y = j };
    }
    void OnDrawGizmos()
    {
       
        float radius = gridSize / 2f;
        float y = radius + radius * Mathf.Sin(Mathf.PI / 6);
        float x = radius * Mathf.Cos(Mathf.PI / 6);
        float left = -width * x;
        float top = height * y/2f;

        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height; j++)
            {
                Vector3 pos = transform.position + GetPosByCoordinate(i, j);// new Vector3(left + i * x * 2 + j % 2 * x, 0, top - j * y);
                Gizmos.color = Color.red;
                Gizmos.DrawSphere(pos, 0.05f);
                for (int k = 0; k < 6; k++)
                {
                    float angle1 = Mathf.PI / 3f * k + Mathf.PI / 6f;
                    float angle2 = Mathf.PI / 3f * ((k + 1) % 6) + Mathf.PI / 6f;
                    Vector3 p1 = pos + new Vector3(radius * Mathf.Cos(angle1), 0, radius  * Mathf.Sin(angle1));
                    Vector3 p2 = pos + new Vector3(radius * Mathf.Cos(angle2), 0, radius  * Mathf.Sin(angle2));
                    Gizmos.color = Color.blue;
                    Gizmos.DrawLine(p1, p2);
                }
            }
        }
    }
}

 

上一篇: C# 数组实现
下一篇: 船摇晃动画实现
粉丝 2
博文 94
码字总数 21937
作品 0
西安
私信 提问
加载中
请先登录后再评论。
【opencv】图形的绘制

1.矩形图像的绘制: 原函数:void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8,int shift=0) img就是需要绘制的图像 pt1 and pt......

其实我是兔子
2014/10/08
1.2K
1
Javascript图元绘制库--ternlight

基于HTML CANVAS API的Javascript库,提供在HTML页面上绘制图元——如流程图的能力。 目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript librar...

fancimage1
2013/02/07
6.3K
1
游戏开发者后端服务--OpenKit

OpenFeint 关门大吉后,OpenFeint 创始人推出了开源项目 OpenKit。OpenKit 支持Unity 3D游戏引擎,并未 iOS 和 Android 的游戏开发者提供开源 API以及存储、数据同步服务。OpenKit 目前提供對...

匿名
2013/03/11
3K
0
最短路径计算--A-STAR

A-STAR 寻找一种静态路网(本算法中为二维数组)中求解最短路径的解决办法 我们可以通过: var element = new Element(); 来创建二维数组的一个节点。 element自身包含了一些方法: element....

前叔
2012/12/14
1.8K
0
纯Python图形GUI库--PyQtGraph

pyqtgraph 是纯 Python 图形 GUI 库,基于PyQT4 /pyside和NumPy。它主要目的用于在数学/科学/工程中。MIT的开源许可下发布。 主要特点: 基本的2D交互视图中框绘制 线和散点图 数据可平移/缩...

匿名
2013/05/16
9.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

没有指定分支的“git push”的默认行为 - Default behavior of “git push” without a branch specified

问题: I use the following command to push to my remote branch: 我使用以下命令推送到我的远程分支: git push origin sandbox If I say 如果我说 git push origin does that push ch......

技术盛宴
25分钟前
11
0
为什么在允许某些Unicode字符的注释中执行Java代码?

问题: The following code produces the output "Hello World!" 以下代码生成输出“Hello World!” (no really, try it). (不,真的,试试吧)。 public static void main(String... args......

富含淀粉
今天
18
0
字符串格式:%与.format - String formatting: % vs. .format

问题: Python 2.6 introduced the str.format() method with a slightly different syntax from the existing % operator. Python 2.6引入了str.format()方法,其语法与现有的%运算符略有不......

javail
今天
22
0
什么是按位移位(位移)运算符以及它们如何工作? - What are bitwise shift (bit-shift) operators and how do they work?

问题: I've been attempting to learn C in my spare time, and other languages (C#, Java, etc.) have the same concept (and often the same operators) ... 我一直在尝试在业余时间学习......

法国红酒甜
今天
32
0
OSChina 周二乱弹 —— 卧槽 李荣浩的契约兽啊

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《红色的回忆》- 痛仰乐队 手机党少年们想听歌,请使劲儿戳(这里) 动弹, 又好多...

小小编辑
今天
67
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部