网站首页 > 基础教程 正文
在不经过编码基础上,能够通过编辑器的动画功能实现旋转。那么同理,通过代码也可以控制模型旋转。这个过程所用到的代码并不多。
那么需要解决的问题是,Cocos 3.x如何创建脚本?这个过程步骤是如何?
如何挂载脚本?
如何旋转?
1 创建一个脚本
首选在资源管理器里面,创建一个文件夹script,将新建的脚本创建在其文件夹下。如创建一个叫Monkey.ts的脚本。如下图1
新建脚本如下,该脚本会继承Component组件类。这里用到语法是TypeScript。
备注:Typescript语法:可以到微软官方查看其写法,https://www.typescriptlang.org/
import { _decorator, Component, Node, math, Vec3, Quat } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Monkey')
export class Monkey extends Component {
start() {
}
update(deltaTime: number) {
}
}
2 编写旋转逻辑
模型点击节点的时候可以观察到其坐标系,Y轴是朝上,Z轴正对着我们,X轴在右边。这个时候要围绕Y轴去旋转。要让它产生旋转,就是在每一帧里面对其角度递增。我们将代码写到update方法里面,使产生每一帧刷新。
import { _decorator, Component, Node, math, Vec3, Quat } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Monkey')
export class Monkey extends Component {
private angle:number = 0 //角值
start() {
}
update(deltaTime: number) {
this.angle++; // 不断递增角度
if(this.angle > 360) {
this.angle = 0;
}
let vec3 = new Vec3(0, this.angle, 0); //针对Y轴旋转
this.node.eulerAngles = vec3;//赋值欧拉角
}
}
3 挂载脚本到其节点身上
要使脚本产生效果,这个时候就要对脚本绑定挂载。鼠标拖住资源管理器的脚本拖拽到对应其节点属性面板。绑定后这个脚本就能成功挂载到脚本身上。
同理,将其他节点也挂载这个脚本,重复上述的操作。完成后进行预览效果。
以上经过脚本后,猴头和骑士就能一起旋转了。若在此刻想打包window给朋友看,这个时候就可以直接打包window平台来实现桌面化平台的支持。
4 不同方向旋转的实现
要其产生不同的方向,只需要修改不同轴的数值就可以实现其效果。如修改X轴的旋转。让猴头基于X轴方向进行旋转。产生效果和基于Y轴并不会一样。
import { _decorator, Component, Node, math, Vec3, Quat } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Monkey')
export class Monkey extends Component {
private angle:number = 0
start() {
}
update(deltaTime: number) {
this.angle++;
if(this.angle > 360) {
this.angle = 0;
}
let vec3 = new Vec3(this.angle, 0, 0);
this.node.eulerAngles = vec3;
}
}
5 小结
基于TypeScript 的语法,通过挂载脚本到节点中去产生旋转效果,这个过程操作十分便利。当你写好的脚本也可以分享给有需要的朋友来展示你要的效果。由于第一次编写,在书写过程出现很多不熟悉情况。查看官方的API是一个不错的选择。
语法需要到微软官方进行查看 https://www.typescriptlang.org/
cocos 文档APi 可以到https://docs.cocos.com/creator/api/zh/ 官方进行查看
- 上一篇: Nodejs安装、配置与快速入门
- 下一篇: KPL:清融人物志,不做下一个久诚只做自己的法王
猜你喜欢
- 2025-01-08 「深度」凯文-杜兰特的九年雷霆光阴
- 2025-01-08 深度丨涅磐重生到“超级3D”球星?他还是无所不能的保罗·乔治
- 2025-01-08 詹姆斯和字母哥全方位对比谁更强?年轻的你,像极了当年的我!
- 2025-01-08 人物|加里哈里斯—潜力3D急速下滑,他需要如何做出改变
- 2025-01-08 威联通NAS下载工具哪家强?
- 2025-01-08 数据表明新秀卡明斯基和德朗-赖特已蓄势待发
- 2025-01-08 广东的进攻得多糟糕呀...江苏首节出现10失误&依然领先广东5分!
- 2025-01-08 五人五问: 谁是下一个总冠军?
- 2025-01-08 推荐10个“不能错过”的前端攻城师必背面试题源码及详解
- 2025-01-08 打造万兆私人网络存储服务器,威联通TS-532X让数据永存
- 01-10AutoCAD命令大全, AutoCAD所有命令,AutoCAD命令集合
- 01-10资产管理如何做,用Excel vba,很简单,你还等什么
- 01-10除了Crontab,Swoole Timer也可以实现定时任务的
- 01-10PHP 安全的最佳实践
- 01-10通过天干地支计算对应五行
- 01-10PHP常用类 – 缓存类 cache
- 01-10php 一步步实现mvc架构——路由篇
- 01-10PHP类来实现一个数组,它将去除数组中所有值的头尾空格
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)