游戏系统代码1.0

oucrjgc / 2024-11-17 / 原文

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

public class InventoryPanel : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Drag2D : MonoBehaviour
{
    [SerializeField] private bool isSelected;
    private void OnMouseDrag()
    {
        Vector2 cursorPos = FindObjectOfType<Camera>().ScreenToWorldPoint(Input.mousePosition);
        Vector3 fixedPos = FindObjectOfType<RunGridManager>().grid.SnapToGrid(cursorPos);
        transform.position = fixedPos+new Vector3(0.5f,0.5f,0);
        if (Input.GetKeyDown(KeyCode.Space))
        {
            transform.rotation = Quaternion.Euler(0, 0, transform.eulerAngles.z - 90);
        }
    }
    public void Update()
    {
    }
}

  

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

public class NAND : MonoBehaviour
{ 

}

  

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

public class RunGridManager : MonoBehaviour
{
    public GridManager grid;
    // Start is called before the first frame update
    void Start()
    {
        //transform.position = FindObjectOfType<Camera>().transform.position;
        transform.position = FindObjectOfType<Camera>().ScreenToWorldPoint(new Vector3(0, 0, 0));
        grid = new GridManager(100, 100, 1, transform.position);
        grid.DrawLine();
    }

    // Update is called once per frame
    void Update()
    {
        //Debug.Log(Input.mousePosition);
        //Debug.Log(FindObjectOfType<Camera>().ScreenToWorldPoint(Input.mousePosition));
        Debug.Log(grid.GetGridPosition(FindObjectOfType<Camera>().ScreenToWorldPoint(Input.mousePosition)));
        grid.DrawLine();
    }
}

  

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Tilemaps;
using UnityEngine;

public class GridManager
{
    private Vector3 WorldPositionOfGridOrigin;
    private int gridWidth;
    private int gridHeight;
    private float cellSize;
    private enum Element { Wire,InputPine,OutputPine,Processer};
    private Transform[,] gridCells;
    public GridManager(int width,int height,float cellSize,Vector3 position)
    {
        gridWidth = width;
        gridHeight = height;
        this.cellSize = cellSize;
        WorldPositionOfGridOrigin = position;
    }
    public void GenerateGrid()
    {
        
    }
    public Vector3 GetWorldPosition(Vector2Int gridPosition)
    {
        return new Vector3(gridPosition.x * cellSize+WorldPositionOfGridOrigin.x, gridPosition.y * cellSize+WorldPositionOfGridOrigin.y,0);
    }
    public Vector2Int GetGridPosition(Vector3 worldPosition)
    {
        int x = Mathf.FloorToInt((worldPosition.x-WorldPositionOfGridOrigin.x)/cellSize);
        int y = Mathf.FloorToInt((worldPosition.y-WorldPositionOfGridOrigin.y) / cellSize);
        return new Vector2Int(x, y);
    }
    public bool IsWithinGrid(Vector2Int gridPosition)
    {
        return gridPosition.x >= 0 && gridPosition.y >= 0 && gridPosition.x < gridWidth && gridPosition.y < gridHeight;
    }
    public bool IsWithinGrid(Vector3 worldPosition)
    {
        Vector2Int gridPosition = GetGridPosition(worldPosition);
        return IsWithinGrid(gridPosition);
    }
    public Vector3 SnapToGrid(Vector3 worldPosition)
    {
        return GetWorldPosition(GetGridPosition(worldPosition));
    }
    public void DrawLine()
    {
        for(int i=0;i<gridWidth; i++)
        {
            for(int j = 0; j < gridHeight; j++)
            {
                Vector3 worldPosition = GetWorldPosition(new Vector2Int(i, j));
                Debug.DrawLine(worldPosition, new Vector3(worldPosition.x+cellSize,worldPosition.y,0));
                Debug.DrawLine(worldPosition, new Vector3(worldPosition.x, worldPosition.y + cellSize,0));
            }
        }
    }
}