[Cocos Creator 3.5赛车游戏]第5节 为汽车节点挂载自定义脚本

news2024/11/20 8:43:20

在前面的章节中您已经学会了如何创建一个汽车节点,这一章我们将会学习如何通过挂载自定义节点的方式让小车变得可控制,所以通过这一章的学习后,您将实现一个效果:开始运行后,小车每隔一帧就延y轴向上移动一段距离。在这之前,我们要先熟悉一下少量的基本概念,这样才能让您更快的熟悉起来。

一、基本概念

1.如何控制节点/更改节点属性:

在Coscos中,节点不光可以挂载组件,还可以挂载自定义脚本,自定义脚本主要使用到两个方法,第一个方法是start()方法,start 方法会在组件第一次激活时调用,所以start方法往往回写对节点的初始操作,比如设置起始点坐标、设置角色满血状态等,第二个方法是update(dt:number),update方法在游戏的每一帧都会调用,所以update方法往往用来写对节点状态改变的方法,例如更新角色的最新血量、更新角色位置(如果操作者此时正在按着前进按钮)等。

二、为汽车节点挂载自定义脚本

1.创建脚本

首先我们要在和前面一样,资源管理器中鼠标右键点击assets,选择“创建-文件夹”来创建一个script文件夹,这个文件夹将会保存我们接下来所有的自定义脚本,效果如下:

然后我们鼠标右键点击新建出来的script文件夹,选择“创建-脚本-NewComponment”:

创建出来的自定义脚本名称为“CarControl”,效果如下:

2.预览一下脚本

现在,让我们鼠标左键双击CarControl脚本,VS Code将会自动运行并打开CarControl,效果如下:

3.将脚本挂载到汽车节点下:

为了让脚本能实现对汽车的控制,例如改变位置等,我们需要将这个脚本挂载到汽车节点下,我们切换窗口切换到Cocos Creator界面,鼠标左键点击“Car”节点来让右边的属性检查器里显示目前Car节点的所有属性,效果如下:

然后我们点击属性管理器中的“添加组件”按钮,往下滑找到“自定义组件”按钮,然后选中刚才创建的CarControl脚本,最终效果如下:

你也许会疑惑为什么要把自定义脚本挂载到Car节点而不是CarSprite节点,这是因为对于小车来说,Car才是它的根节点,我们最终达到的效果是要改变小车的位置,如果节点被挂载到了CarSprite节点下,那么运行起来后位置发生改变的是小车的图片,而不是真正的小车的根节点。

4.实现控制逻辑

在上图中,当你手动去修改y值的时候,你会发现场景编辑器中的小车的位置就会随着你的改动而发生改变。所以只需要把您手动的这个过程交给脚本去做就行了。根据属性管理器,需要修改的是当前节点的Position属性的Y值。回忆下我们要达到的效果:“开始运行后,小车每隔一帧就延y轴向上移动一段距离”,因为是每一帧都要移动,所以我们将会把这一过程写在update里面。而按照默认规则,自定义节点中调用this.node就表示当前被挂载的节点。而Postion作为节点的属性必有set和get方法,所以综上,核心实现逻辑为:

update(deltaTime: number) {

var nowPostion = this.node.getPosition()

nowPostion.y = nowPostion.y + 1

this.node.setPosition(nowPostion)

}

整体如下:

5.查看结果

现在,在VS Code按下Ctrl+S,切换到Cocos Creator窗口按下Ctrl+S(建议多按几次直到确定左上角没有*了),然后点击运行按钮,您将会在浏览器中看到效果,小车将会缓缓向上移动直到超出摄像机范围:

6.查看代码中的console.log的输出:

在浏览器界面以内,黑色框以外的灰色部分任意位置点击鼠标右键,选择检查:

点击“检查”后将会开启浏览器的开发工具,选择“控制台”就可以看到console.log的输出了:

以上就是本章的全部内容,感谢您的观看和实践。

 章节源码、答疑和交流移步 https://t.zsxq.com/5JQPx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vs无法打开或包括文件”QTxxx“

vs创建项目时默认引入core、gui、和widgets等模块,在需要网络通讯或者图表等开发时需要添加相应模块。 点击扩展 -> QT VS Tools -> QT Project Setting->Qt Modules,添加相应模块即可

OpenAI、微软、智谱AI 等全球 16 家公司共同签署前沿人工智能安全承诺

人工智能(AI)的安全问题,正以前所未有的关注度在全球范围内被讨论。 日前,OpenAI 联合创始人、首席科学家 Ilya Sutskever 与 OpenAI 超级对齐团队共同领导人 Jan Leike 相继离开 OpenAI,Leike 甚至在 X 发布了一系列…

Java中Spring MVC 来如何接收表单数据

目录 一、Java语言介绍 二、Spring MVC 框架介绍 三、什么是表单 四、Spring MVC 来如何接收表单数据 一、Java语言介绍 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司的James Gosling等人开发。它最初于1995年发布,被设计为具有…

以人为本的人工智能:李飞飞谈AI

随着人工智能(AI)技术的迅猛发展,关于AI的讨论越来越多,特别是围绕其可能带来的威胁。有人担心高效的AI会夺走我们的工作,甚至不可控的AI最终会统治人类。对此,斯坦福大学计算机科学系教授李飞飞提出了不同…

【bug解决】文件chunk分包上传中断报错

文章目录 报错信息原因分析解决方案 一天闲着无聊,打开项目线上报错日志信息,突然发现一段很奇怪的报错:MultipartException,主观认为导致这个问题的原因无非就几个原因: 文件上传格式大小超出限制,在配置文…

Llama 3超级课堂作业笔记

文章目录 基础作业完成 Llama 3 Web Demo 部署环境配置下载模型Web Demo 部署对话截图 使用 XTuner 完成小助手认知微调Web Demo 部署自我认知训练数据集准备训练模型推理验证 使用 LMDeploy 成功部署 Llama 3 模型环境,模型准备LMDeploy CLI chatLMDeploy模型量化(…

访问列表元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中,如果想将列表的内容输出也比较简单,可以直接使用print()函数即可。例如,创建一个名称为untitle的列表…

python-docx 在word中指定位置插入图片或表格

docx库add_picture()方法不支持对图片位置的设置 1、新建一个1行3列的表格,在中间的一列中插入图片 from docx import Document from docx.shared import Pt from docx.oxml.shared import OxmlElement from docx.enum.text import WD_ALIGN_PARAGRAPHdef add_cen…

谷歌开源项目BERT源码解读与应用实例

数据及代码见文末 基于BERT的中文情感分析实战:基于BERT的中文情感分析实战-CSDN博客 基于BERT的中文命名实体识别识别实战:基于BERT的中文命名实体识别识别实战-CSDN博客 1.项目配置文件 GLUE/BERT_BASE_DIR是项目的预训练权重,预训练权重主要包含3个部分:参数配置文件…

LangChain - 构建知识图谱提升RAG

本文翻译整理自:Enhancing RAG-based application accuracy by constructing and leveraging knowledge graphs https://blog.langchain.dev/enhancing-rag-based-applications-accuracy-by-constructing-and-leveraging-knowledge-graphs/ code : https://github.c…

在gitlab CICD中 小试 hooks:pre_get_sources_script 功能

参考链接: hooks:pre_get_sources_script 功能简介 hooks:pre_get_sources_script 是gitlab CICD中的一个功能,该功能可以指定在克隆 Git 仓库和任何子模块之前要在执行器上执行的某些命令。例如: 调整 Git 配置导出跟踪变量 下来简单给…

修改默认时区,默认语言,默认国家

确认时区,语言,国家 build/make/target/product/languages_default.mkframeworks/base/packages/SettingsLib/res/xml/timezones.xml设备mk中添加相关内容 PRODUCT_PROPERTY_OVERRIDES \persist.sys.timezoneEurope/AmsterdamPRODUCT_PROPERTY_OVERRI…

Centos7离线安装RabbitMQ教程

目录 安装包准备开始安装1. 创建目录2. 上传文件3. 安装erlang语言4. 安装socat5. 安装rabbitmq6. 启动、停止rabbitmq7. 设置开机启动8. 开启web界面管理工具9. 开启防火墙(root)10. 访问页面11. 附录 安装包准备 (1)准备RabbitMQ的安装包(…

adb卸载系统垃圾应用

//获取包名 输入如下代码,然后在打开和关闭要获取包名的app就会打印出该app的包名 adb shell am monitor //卸载系统应用 -k会保留用户数据,不包含-k则不会保留用户数据 adb shell pm uninstall -k --user 0 包名 (包名一般为:c…

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式:增删查比较方便,但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式:yaml文件管理 使用yaml配置文件或者json配置文…

动态规划(算法)---01.斐波那契数列模型_第N个泰波那契数

前言: 有一个很著名的公式 “程序数据结构算法”。 算法是模型分析的一组可行的,确定的,有穷的规则。通俗的说,算法也可以理解为一个解题步骤,有一些基本运算和规定的顺序构成。但是从计算机程序设计的角度看&#xff…

全栈实现发送验证码注册账号 全栈开发之路——全栈篇(3)

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

LangChain带你轻松玩转ChatGPT等大模型开发

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

CDN管理平台安装说明

CDN管理平台安装说明 系统需求 操作系统:Linux CPU不少于1核心 可用内存不少于1G 可用硬盘空间不小于10G 对于每日千万访问以上的CDN系统推荐配置如下: CPU不少于8核心 可用内存不少于8G 可用硬盘空间不小于200G 准备工作 在安装GoEdge之前&#xff0…

集中电表抄表系统

1.集中电表抄表系统的简述 集中电表抄表系统是一种现代化电力管理方法,它通过自动化的形式搜集、解决与分析电力耗费数据信息,大大提升了电力行业经营效率。这类系统的主要目标是替代传统的人工抄水表方法,降低不正确,提升数据的…