游戏系统代码1.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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()
    {
         
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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()
    {
    }
}

  

1
2
3
4
5
6
7
8
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class NAND : MonoBehaviour
{
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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();
    }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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));
            }
        }
    }
}

  

posted @   数字电路模拟游戏  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示