首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Godot-创建一个3D棋盘

Godot-创建一个3D棋盘

原创
作者头像
kdyonly
修改2025-07-06 13:30:39
修改2025-07-06 13:30:39
19000
代码可运行
举报
文章被收录于专栏:个人编程笔记个人编程笔记
运行总次数:0
代码可运行

这里我们使用C#作为游戏的脚本语言,首先去官网下载Godot .net 版本。下载完成之后,创建我们的游戏项目。

创建主场景

添加一个主场景Main.tscn,根节点是Node3D节点Main,然后分别添加子节点Camera3D,Board。

设置相机的位置和方向,根据你想实现的效果进行调整,这里提供参考设置:Position(3.0,7.0,4.0),Rotation(-90.0,0.0,0.0)。

Board用来存放表格,并构成棋盘。

创建一个单元格场景

添加一个Cell.tscn,根节点Area3D,添加CollisionShape3D,MeshInstance3D。

CollisionShape3D用来做碰撞检测,我们将它的Shape设置为BoxShape3D。

MeshInstance3D显示3D模型,将它的Mesh设置为PlaneMesh,size(1.0,1.0),你将得到一个正方形,还可以设置材质,改变颜色等等。

添加脚本

为主场景添加脚本,右键根节点,点击添加脚本,语言我们选C#,名称Main.cs。

代码实现一个8x8的棋盘,并且颜色黑白相间,参考如下:

代码语言:javascript
代码运行次数:0
运行
复制
using Godot;
using System;

public partial class Main : Node3D
{
	const int BoardSize = 8;
	const float CellSize = 1.0f;

	private PackedScene cellScene;

	public override void _Ready()
	{
		cellScene = GD.Load<PackedScene>("res://Cell.tscn");
		Node3D board = GetNode<Node3D>("Board");

		for (int x = 0; x < BoardSize; x++)
		{
			for (int y = 0; y < BoardSize; y++)
			{
				var cell = cellScene.Instantiate<Cell>();
				cell.BoardPosition = new Vector2I(x, y);
				cell.Position = new Vector3(x, 0, y);
				
				// 创建黑白交错材质
				var material = new StandardMaterial3D();
				bool isBlack = (x + y) % 2 == 0;
				material.AlbedoColor = isBlack ? new Color(0.1f, 0.1f, 0.1f) : new Color(0.9f, 0.9f, 0.9f);
				material.Metallic = 0.1f;
				material.Roughness = 1.0f;

				// 设置到格子的 MeshInstance3D 上
				var meshInstance = cell.GetNode<MeshInstance3D>("MeshInstance3D");
				meshInstance.MaterialOverride = material;

				board.AddChild(cell);
			}
		}
	}
	private void OnCellClicked(Vector2I position)
	{
		GD.Print($"Main received click at {position}");
	}
}

为单元格场景添加脚本Cell.cs,参考代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
using Godot;
using System;

public partial class Cell : Area3D
{
	public Vector2I BoardPosition{get;set;}
}

运行结果

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建主场景
  • 创建一个单元格场景
  • 添加脚本
  • 运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档