为什么当我在网格上的立方体之间添加一个空间时,整个网格大小会发生变化?

jdoedoe doedoe

网格为 10x10

这是添加空格之前的原始脚本:

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

public class GridGenerator : MonoBehaviour
{
    public GameObject gridBlock;
    public int gridWidth = 10;
    public int gridHeight = 10;
    public List<Vector3> positions = new List<Vector3>();
    public List<GameObject> blocks = new List<GameObject>();

    private GameObject[] wallsParents = new GameObject[4];

    void Start()
    {
        wallsParents[0] = GameObject.Find("Top Wall");
        wallsParents[1] = GameObject.Find("Left Wall");
        wallsParents[2] = GameObject.Find("Right Wall");
        wallsParents[3] = GameObject.Find("Bottom Wall");

        GenerateGrid();
    }

    private void GenerateGrid()
    {
        for (int x = 0; x < gridWidth; x++)
        {
            for (int z = 0; z < gridHeight; z++)
            {
                GameObject block = Instantiate(gridBlock, Vector3.zero, gridBlock.transform.rotation) as GameObject;
                block.transform.parent = transform;
                block.transform.tag = "Block";
                block.transform.localScale = new Vector3(1, 0.1f, 1);
                block.transform.localPosition = new Vector3(x, 0, z);
                block.GetComponent<Renderer>().material.color = new Color(241, 255, 0, 255);

                if (block.transform.localPosition.x == 0)//TOP
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[0].transform;
                    block.transform.name = "TopWall";
                }
                else if (block.transform.localPosition.z == 0)//LEFT
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[1].transform;
                    block.transform.name = "LeftWall";
                }
                else if (block.transform.localPosition.z == gridWidth - 1)//RIGHT
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[2].transform;
                    block.transform.name = "RightWall";
                }

                else if (block.transform.localPosition.x == gridHeight - 1)//BOTTOM
                {
                    positions.Add(block.transform.localPosition);
                    block.transform.parent = wallsParents[3].transform;
                    block.transform.name = "BottomWall";
                }

                blocks.Add(block);
            }
        }
    }
}

结果:4 堵墙就位:

网格

然后我改变了这一行:

block.transform.localPosition = new Vector3(x, 0, z);

block.transform.localPosition = new Vector3(x * 1.5f, 0, z * 1.5f);

现在的结果是 4 面墙的位置错误:

网格

我也需要乘以墙壁块吗?

但是,如果我已经将所有块乘以 1.5f 那么为什么墙壁块的位置没有改变 1.5f 呢?

乌麦尔
block.transform.localPosition = new Vector3(x * 1.5f, 0, z * 1.5f);

这条线将设置localPosition.x = 1.5f * x只影响右墙和底墙,因为对于顶墙和左墙x = 0,乘法不会影响。

您必须更改比较以检查索引值而不是localPosition

if (x == 0) //TOP

if (z == 0) //LEFT

if (z == gridHeight - 1) //RIGHT

if (x == gridWidth - 1) //BOTTOM

这将在与位置无关的墙壁中添加正确的块。

希望这可以帮助 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将控件添加到窗口时,用户控件上的按钮大小会发生变化

来自分类Dev

为什么当我查看最近标记的instagram API时帖子似乎会发生变化

来自分类Dev

当我将其写入文件时,为什么3D numpy数组中的值会发生变化?

来自分类Dev

当我将其写入文件时,为什么3D numpy数组中的值会发生变化?

来自分类Dev

当我将它们添加到列表中时,为什么这些对象(来自生成器)会发生变化?

来自分类Dev

为什么当我将存储在一个变量中的对象分配给另一个变量时,当我更改一个变量时,这两个变量都会发生变化?

来自分类Dev

在具有相同分辨率的显示器之间拖动窗口时,为什么窗口的像素大小会发生变化?(带有Windows 8.1的联想)

来自分类Dev

如果应用程序不在 0,0 处,则捕获另一个应用程序屏幕截图时的图像大小会发生变化

来自分类Dev

我想制作一个导航系统,在该系统上,单击div会发生变化

来自分类Dev

为什么我移动时游戏中的事物会发生变化?Java处理环境

来自分类Dev

从另一个创建 xml 文件时,selfnodes 的结构会发生变化

来自分类Dev

为什么当我分别使用“ if”语句和在“ if”中使用“ if”时值会发生变化?

来自分类Dev

为什么当我使用不应对视图作出反应的着色器在模型周围移动视图时,它会发生变化?

来自分类Dev

为什么使用box-sizing属性在边框中添加<td>的大小时会发生变化?

来自分类Dev

在Drupal 7中切换语言时,标题大小会发生变化

来自分类Dev

当我使用 bitmap.copy() 时,位图的方向会发生变化

来自分类Dev

为什么 go 块内的命名空间会发生变化?

来自分类Dev

为什么在r ggplot2中添加构面时,堆叠条形图会发生变化

来自分类Dev

函数运行1次以上时,为什么我的Speech Synthesis API语音会发生变化?

来自分类Dev

通过JNI在Java代码中运行EGL函数时,为什么我对EGL函数的调用会发生变化?

来自分类Dev

由于python tkinter中另一个网格元素的内容更新,如何阻止一个网格元素的位置发生变化?

来自分类Dev

为什么状态栏字体大小在iPhone 6上会发生变化?

来自分类Dev

为什么[0]会发生变化?

来自分类Dev

为什么HashSet的keySet中的元素顺序在运行之间会发生变化?

来自分类Dev

为什么对象的地址在方法之间会发生变化?

来自分类Dev

为什么表达式类型在C ++中的版本之间会发生变化?

来自分类Dev

为什么程序的输出在计算机之间会发生变化

来自分类Dev

为什么在使用同一台 PC 时“hostname -I”的输出会发生变化?

来自分类Dev

为什么当一个引用一个对象时,两个引用同一对象的变量不发生变化?

Related 相关文章

  1. 1

    将控件添加到窗口时,用户控件上的按钮大小会发生变化

  2. 2

    为什么当我查看最近标记的instagram API时帖子似乎会发生变化

  3. 3

    当我将其写入文件时,为什么3D numpy数组中的值会发生变化?

  4. 4

    当我将其写入文件时,为什么3D numpy数组中的值会发生变化?

  5. 5

    当我将它们添加到列表中时,为什么这些对象(来自生成器)会发生变化?

  6. 6

    为什么当我将存储在一个变量中的对象分配给另一个变量时,当我更改一个变量时,这两个变量都会发生变化?

  7. 7

    在具有相同分辨率的显示器之间拖动窗口时,为什么窗口的像素大小会发生变化?(带有Windows 8.1的联想)

  8. 8

    如果应用程序不在 0,0 处,则捕获另一个应用程序屏幕截图时的图像大小会发生变化

  9. 9

    我想制作一个导航系统,在该系统上,单击div会发生变化

  10. 10

    为什么我移动时游戏中的事物会发生变化?Java处理环境

  11. 11

    从另一个创建 xml 文件时,selfnodes 的结构会发生变化

  12. 12

    为什么当我分别使用“ if”语句和在“ if”中使用“ if”时值会发生变化?

  13. 13

    为什么当我使用不应对视图作出反应的着色器在模型周围移动视图时,它会发生变化?

  14. 14

    为什么使用box-sizing属性在边框中添加<td>的大小时会发生变化?

  15. 15

    在Drupal 7中切换语言时,标题大小会发生变化

  16. 16

    当我使用 bitmap.copy() 时,位图的方向会发生变化

  17. 17

    为什么 go 块内的命名空间会发生变化?

  18. 18

    为什么在r ggplot2中添加构面时,堆叠条形图会发生变化

  19. 19

    函数运行1次以上时,为什么我的Speech Synthesis API语音会发生变化?

  20. 20

    通过JNI在Java代码中运行EGL函数时,为什么我对EGL函数的调用会发生变化?

  21. 21

    由于python tkinter中另一个网格元素的内容更新,如何阻止一个网格元素的位置发生变化?

  22. 22

    为什么状态栏字体大小在iPhone 6上会发生变化?

  23. 23

    为什么[0]会发生变化?

  24. 24

    为什么HashSet的keySet中的元素顺序在运行之间会发生变化?

  25. 25

    为什么对象的地址在方法之间会发生变化?

  26. 26

    为什么表达式类型在C ++中的版本之间会发生变化?

  27. 27

    为什么程序的输出在计算机之间会发生变化

  28. 28

    为什么在使用同一台 PC 时“hostname -I”的输出会发生变化?

  29. 29

    为什么当一个引用一个对象时,两个引用同一对象的变量不发生变化?

热门标签

归档