当前位置: 首页 > news >正文

godot+c#实现玩家的简单移动

前言

接下来教大家通过godot+c#实现玩家的简单移动,如下是操作示例

玩家移动

步骤

项目新建

首先新建一个项目,打开godot点击【新建】,然后修改游戏项目名称,点击创建,渲染器任意即可

在这里插入图片描述

创建背景

为演示方便,当前项目不需要引入任意素材,因此,为了方便观察玩家移动,我创建了一个背景

在这里插入图片描述

  • 要创建背景,首先我们新建一个node2d场景
    在这里插入图片描述
  • 右键点击添加子节点

在这里插入图片描述

  • 选择点击Sprite2D节点,创建
    在这里插入图片描述
  • 找到右边的检查器,选择里面的Texture,创建一个CanvasTexture画布纹理
  • 下方的VisibilityModulate可以更改画布颜色
    在这里插入图片描述
  • 鼠标滚轮可以放大游戏中心画面,就可以看到创建的画布,然后画面中心上方,有一排按钮,前面四个是最常用的

他们分别是
选择模式: 调整物体/场景大小
移动模式:移动物体/场景位置
旋转模式:旋转物体/场景方向
缩放模式:放大缩小物体/场景倍率

在这里插入图片描述

  • 我们选择选择模式变更画布大小

在这里插入图片描述

  • 按照同样的方式放几个小的画布,修改颜色,用于区别不同位置,可以更好观察玩家移动

玩家创建

要创建玩家,我们选择创建其他节点,然后选择CharacterBody2D节点,作为主节点,并且修改节点名称,并保存

在这里插入图片描述

在这里插入图片描述

  • 然后往里面添加两个子节点CollisionShape2DSprite2D

这两个节点中
CollisionShape2D:是2D碰撞节点,用于检测碰撞,是为了配合CharacterBody2D必要的,而它必要的是属性是检查器shape属性,该属性是碰撞形状,只有在碰撞形状内可以检测碰撞
Sprite2D:是2D的图形节点,可以展示物品/玩家的形象,必要属性是检查器Texture纹理属性,其中里面我们可以放置图片,为了展示玩家形象,我们创建项目有默认带一个图片

在这里插入图片描述

  • 然后我们把这个图片拖到玩家节点下的Sprite2DTexture就可以展示玩家形象了

在这里插入图片描述

  • 接下来是添加脚本,选择主节点,然后有一个书页的图标点击添加脚本,或者鼠标右键添加脚本

在这里插入图片描述

  • 然后我们选择

语言:C#
路径:修改玩家脚本名称为Player.cs

在这里插入图片描述

  • 为了可以控制玩家移动,我们点击上方【项目】-【项目设置】-【输入映射】

在这里插入图片描述

点击添加新动作输入操作名称,例如,我把向左移动命名成move_left输入名称之后,右边的添加会亮起,点击或回车添加。
然后下面会出现操作,右边有一个竖着的笔的图标,点击,然后输入按键,代表按什么按键我就会执行什么操作,如我的move_left输入A那么等代码书写完毕之后玩家操作之后会向左移动

  • 输入按键之后点击确认即可,注意,一个操作可以映射多个按键,如向左移动我可以按A之外,还能按左箭头按键
    在这里插入图片描述

新增GameInput.cs文件,注意这个文件脚本不要挂载在任何节点下,你可以在文件系统下新建Scripts文件夹,然后在这个文件夹下右键新建脚本即可创建.如下是具体代码

Player.cs

using Godot;
using System;
using static Godot.TextServer;public partial class Player : CharacterBody2D
{public const float Speed = 300.0f;public override void _PhysicsProcess(double delta){Vector2 direction = GameInputEvent.MovementInput();Velocity = direction * Speed;MoveAndSlide();}
}

GameInput.cs

using Godot;
using System;public class GameInputEvent
{public static Vector2 direction;public static Vector2 MovementInput(){if (Input.IsActionPressed("move_left")){direction = Vector2.Left;}else if (Input.IsActionPressed("move_right")){direction = Vector2.Right;}else if (Input.IsActionPressed("move_down")){direction = Vector2.Up;}else if (Input.IsActionPressed("move_up")){direction = Vector2.Down;}else{direction = Vector2.Zero;}return direction;}
}

然后点击右上角有一个小锤子图标,进行编译,编译完之后,打开背景场景,将玩家场景拖进去。
点击这个图标右边的电影图标进行启动游戏
在这里插入图片描述

在这里插入图片描述

然后我们的游戏就运行起来了

在这里插入图片描述

结语

如上为godot+c#实现玩家的简单移动教学


文章转载自:

http://tq1J029O.jtmrx.cn
http://jIHvpjkv.jtmrx.cn
http://CXY2W0M0.jtmrx.cn
http://PLYqiKnJ.jtmrx.cn
http://i6HbRuOt.jtmrx.cn
http://WBysJiR1.jtmrx.cn
http://X2mknkqf.jtmrx.cn
http://1YF2HmRA.jtmrx.cn
http://UljWwoVw.jtmrx.cn
http://UEZDpE9v.jtmrx.cn
http://Xj7zHi4N.jtmrx.cn
http://zos4iNfP.jtmrx.cn
http://vwHPCk5v.jtmrx.cn
http://aOiO4maJ.jtmrx.cn
http://ayDEp6nP.jtmrx.cn
http://35tfYnxI.jtmrx.cn
http://s66sGzKe.jtmrx.cn
http://9uZ2A7qw.jtmrx.cn
http://8WnQM9VE.jtmrx.cn
http://APUlMGYv.jtmrx.cn
http://aY9faqt9.jtmrx.cn
http://obrg8R42.jtmrx.cn
http://hnpt1v0U.jtmrx.cn
http://fggovLSJ.jtmrx.cn
http://XzNZ54T3.jtmrx.cn
http://JVhvnShV.jtmrx.cn
http://o8dJZTul.jtmrx.cn
http://NLZUI5kF.jtmrx.cn
http://sK8Giu60.jtmrx.cn
http://axhC2Urt.jtmrx.cn
http://www.dtcms.com/a/385493.html

相关文章:

  • 【工具】多线程任务执行函数
  • 使用 Spring Boot 搭建和部署 Kafka 消息队列系统
  • scikit-learn pipeline做数据预处理 模板参考
  • MATLAB的二维SIMPLE算法实现方腔自然对流
  • SPMI总线协议(二)
  • 全场景流畅投屏,跨 VLAN 技术成酒店智能升级核心动力
  • 5.MQ常见问题梳理
  • 数字人作为广播工具:消息透传接口的作用和实现
  • 解读50页企业运维管理体系总体规划【附全文阅读】
  • 如何离线安装docker-compose
  • 冒泡排序Java第一版
  • DevOps历程--Docker安装Jenkins详细教程
  • 《自动控制原理》第 1 章 绪论
  • 【10】C#实战篇——C# 调用 C++ dll(C++ 导出函数、C++导出类)
  • Flask框架的简单了解
  • 高性能代码优化实战与解析
  • 企业即时通讯保障企业通讯安全,提升企业部门协作效率
  • 在亚洲市场:为何CES Asia无法被复制?
  • 【cpp Trip第2站】map,set,hash
  • 菊风携手东莞银行,推进金融信创国产化进程
  • 内部类的用法
  • 设计模式(C++)详解—适配器模式(2)
  • 6.Cesium 学习
  • 拉氏变换的 s 域微分性质
  • 掌握Scrapy数据建模与请求技巧
  • LLaMA Factory微调记录(重修版)
  • JAVA开发面试题
  • 逆向国内外社媒电商爬虫算法思路
  • 中山AI搜索优化公司:AI时代GEO技术全解析
  • PostgreSQL GIN 索引揭秘