Cocos creator 学习笔记(2)
7.ts 跳转场景
director.loadScene("game");
8 ts--在ts文件声明变量时,前面加上注解 @property,此变量量就可以在cocos creator编辑器里面修改
9 ts 将v2坐标转v3坐标
let locaton:Vec2= event.getLocation();//触摸事件 返回的坐标是世界坐标的位置this.curPos=v3(locaton.x,locaton.y,0);//将当前设置为手指或者鼠标
10 点击事件返回的坐标是世界坐标的位置,而小飞机是canvas的子节点 ,
this.node.setPosition(this.curPos);
上面代码设置的是相对于canvas的坐标
this.node.parent.getComponent(UITransform).convertToNodeSpaceAR(v3(locaton.x,locaton.y,0));
this.node.parent:获取到局部的canvas节点
.getComponent(UITransform) :获取到UITransform组件下的convertToNodeSpaceAR属性
将v2坐标转为v3坐标
11.了解常驻界面的概念常驻节点介绍
12节点池
NodePool
13 find方法
获取节点
this.presistNode=find("PresistNode");;
获取节点的属性
this.presistNode.getComponent(PresistNode).
【presistNode为节点对象】【PresistNode为presistNode节点绑定的ts脚本】
14播放动画
15 绑定普通的碰撞监听
let collider:Collider2D=this.getComponent(Collider2D);if(collider){collider.on(Contact2DType.BEGIN_CONTACT,this.onBeginConcat,this)}
onBeginConcat(selt:Collider2D,other:Collider2D,contact:IPhysics2DContact|null){}
other参数 是被碰撞的节点
other.node 就可以获得被碰撞的node
other.getComponent(绑定的js)//可以获取被绑定的js
other.node.getChildByName("节点名称")//可以获得被碰撞的节点
16播放音效
先引入AudioSource组件
声明AudioClip类型,引入音效
@property(AudioClip)gameBackMusic:AudioClip=null;//集中敌机音效
播放音乐
this.node.getComponent(AudioSource).playOneShot(this.gameBackMusic);
17 将节点添加到Canvas节点上去
find("Canvas").addChild
let anim=this.presistNode.getComponent(PresistNode).animFactory.createAnim();anim.setPosition(this.node.getPosition())find("Canvas").addChild(anim);anim.getComponent(Animation).play();
anim.getComponent(Animation).play()//Animation 需要收到导入,将 Animation复制到上面cc的位置,play方法 播放动画
动画节点自动删除
第一个箭头添加帧事件
然后填写贞事件名字,再事件方法里面清楚节点
18绑定键盘输入事件
input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);
onKeyDown(event: EventKeyboard) {console.log(event)switch (event.keyCode) {case KeyCode.KEY_W:console.log('上');break;case KeyCode.KEY_S:console.log('下');break;case KeyCode.KEY_A:console.log('左');break;case KeyCode.KEY_D:console.log('右');break;}}
19刚体问题
现在一个单色节点,然后在节点上添加刚体组件,这样的话 滚动的地面就可以用坐标了
20 Ts 加载网络图片
@property({ type: Sprite })spritee: null;assetManager.loadRemote(url,{ext : '.png'}, (err,asset : ImageAsset)=>{if(err) {console.log(err);}else {console.log('头像下载成功');that.spritee.spriteFrame = SpriteFrame.createWithImage(asset); }});
21 引入微信API
项目根目录执行
npm i -S weixin-js-sdk
const wx = window['wx'];//避开ts语法检测然后
wx.api方法名就行
22scrollview对象获取滑动的位置
scrollview.getScrollOffset();
23获取scrollview的content节点以及他的UI节点
var conUi=this.scrollview.getChildByName("view").getChildByPath("content").getComponent(UITransform)
console.log("content的高度",conUi,conUi.height);
24 ts1文件 挂在预制体1上 ts2文件挂在另一个预制体2上
预制体2动态添加到预制体1上面的 预制体2的点击事件想通知预制体1
第一步 在ts1文件声明变量(guanfaFab ts1文件名)
public static ins: guanfaFab = null;
在ts1文件上start方法里 复制this上下文
start() {guanfaFab.ins = this}
第二 在ts2文件去引用
import { guanfaFab } from './guanfaFab';
btnclick就是ts1文件里的一个方法明
guanfaFab.ins.btnclick(res,this.numNow);
25序列动画
tween(this.node).delay(num_delayRandom).to(num_toRandom,{scale:new Vec3(1,1,1)}).to(num_toRandom,{scale:new Vec3(0.3,0.3,0.3)}).union() .repeatForever().start()//节点
26大摆锤动画(this.dabaichuiImg这是一个精灵节点)
tween(this.dabaichuiImg.node).to(2,{angle:-70}).to(2,{angle:70}).union() .repeatForever().start()
27首先点击隐藏的节点用代码显示出来(toukuiK是一个精灵节点)
toukuiK.node.active=true;
28世界坐标转换
1.得到目标节点A的世界坐标 getposition
2.将A的世界坐标转成B的父节点的AR converToNodeSpaceAR
3.用AR的返回值设B的位置setposition
v3_position 是预制体自己的坐标
this.node.getComponent(UITransform) 获取预制体的 组件
v3_position_word 获取的世界坐标
let v3_position_word=this.node.getComponent(UITransform).convertToWorldSpaceAR(v3_position);
29获取重力加速度
PhysicsSystem2D.instance.gravity
29修改重力加速度(反重力所有有个负号)
PhysicsSystem2D.instance.gravity=new Vec2(gravity.x,-gravity.y);
30获取Collider2D组件 监听碰撞
// let collider=this.getComponent(Collider2D);// collider?.on(Contact2DType.BEGIN_CONTACT,()=>{// this.can_jum=true;// },this);
31获取Collider2D多个组件 监听多个碰撞,使用tag区分
let colliders=this.getComponents(Collider2D);for(let collider of colliders){// /如果是底下那个Collider2D触到地面的话 就可以再次跳跃if(collider.tag==1||collider.tag==2){let gravity=PhysicsSystem2D.instance.gravity;//获取重力collider?.on(Contact2DType.BEGIN_CONTACT,()=>{console.log(collider.tag,PhysicsSystem2D.instance.gravity);if(collider.tag==1&&Math.sign(gravity.y)>0){return false;}else if(collider.tag==2&&Math.sign(gravity.y)<0){return false;}this.can_jum=true;},this);}}
32 这个sensor 只监听碰撞无实际碰撞效果
33.初始化之后修改刚体大小 这个节点上挂了BoxCollider2D组件,碰撞之后修改他的碰撞范围宽高(碰撞体碰撞后,只有延迟半秒或者几百毫秒之后才能修改他的位置,或者销毁或者碰撞体大小)
var bc= this.bottonXian.getComponent(BoxCollider2D);bc.size=new Size(10,10);bc.apply();}
34 节点顺时针旋转(这是Node节点)
angle:number;update(deltaTime: number) {this.angle=this.angle+1;if(this.angle>=360){this.angle=0;}this.bottonXian11.angle= -this.angle;}
35触摸随之移动
更改触摸改变的x和y的变量,没有进行世界坐标的转换
// 鼠标按下时候触发this.node.on(Node.EventType.TOUCH_START , (event) => {console.log('当手指触点落在目标节点区域内时');}, this);// 松开时候this.node.on(Node.EventType.TOUCH_MOVE , (event) => {let delta=event.getDelta();var pos=this.node.getPosition();pos.x=pos.x+delta.x;pos.y=pos.y+delta.y;this.node.setPosition(pos);}, this);
36 接收多个同类型的节点Ts
@property({type:[Label]})numLabel = []
37两个同是静态的刚体 不会触发碰撞监听,如果想要手动拖动刚体与另一个静态的刚体监听碰撞
可以将手拖动的刚体改成动态的,然后重力改成0就行了
37.获取屏幕的实际宽高
view.getVisibleSize()
38.修改节点位移
bgView.position=v3(20,20,0);
39缓存数据到本地
- cc.sys.localStorage.setItem('help', '999999999999999'); //存储数据
Cocos creator 学习笔记(2)相关推荐
- cocos creator学习(七)音乐
目录 背景音乐 使用AudioSource组件 ①添加组件 ②脚本控制 直接脚本控制 ①声明 ②播放背景音乐(playMusic) 音效 直接脚本控制 ①声明 ②播放 ③停止 注意 背景音乐 使用Au ...
- Cocos Studio学习笔记实战第一篇-我们山寨一个那年那兔那些事(看效果)
学习了Cocos Studio大概一周,正赶上十一长假,于是乎想利用刚刚学习的东西巩固一下这几天的学习成果,9月份一直在玩手游<那年那兔那些事>,所以图方便,就把那年那兔那些事的apk报解 ...
- Cocos Creator学习目录
目录 安装和启动 文件结构 编辑器基础 基本概念 (场景树 节点 坐标 组件 ) Cocos Creator 脚本简介 Cocos Creator调试 节点 cc.Node 组件开发cc.Compon ...
- [经验] Cocos Creator使用笔记 --- 调用不同脚本下的函数
因为 JavaScript 不同于 Java, 想要调用不同文件的函数的话不能直接 ClassName object = new ClassName(); object.function(param) ...
- cocos creator 学习随笔 day03 节点和组件属性
目录 节点本身属性 控件属性 场景 空节点 3D对象 2D对象 UI组件 光线 特效 摄像机 地形 节点本身属性 第一栏为节点名,可修改,前面得勾,是表示是否使用该节点,去掉代表隐藏该节点,但是该节点 ...
- cocos creator学习(十四) websocket、onfire
1.使用websocket替换原本无法在原生平台使用的socket. 2.事件分发开源库onfire的使用 3.一些注意事项 1.使用websocket替换原本无法在原生平台使用的socket. 其实 ...
- cocos creator 学习第一篇
文章目录 游戏引擎: cocos2d cocos creator 版本: 编辑器 游戏引擎: unity 编程语言主要为c# 早期cocos2d 等用c++ 或者lua cocos creator 编 ...
- cocos creator学习个人踩坑(3)--关于项目调试在一些安卓机上FPS低
一些cocos creator遇到的小问题 问题 在做点消游戏项目的时候,在一些旧的安卓机上测试时消除特效显示会有明显的卡顿,火箭消除会有残留,FPS下降明显 原因 通过真机调试,发现日志输出会明显导 ...
- Cocos Creator 入门笔记
推荐文档https://www.tslang.cn/docs/home.html 文章目录 (一).从装机箱谈到面向对象再到游戏引擎 (二).Cocos发展史 (三).编程语言 环境: 语言区别: 开 ...
最新文章
- python领域有什么用-Python都能应用到哪些领域?具体就业职位有什么?
- 【Python学习系列二十二】pandas数据筛选和排序
- zemax 宏怎么编写数组_编写Excel VBA程序的10个技巧
- cpci检索为什么那么慢_索引原理与慢查询优化
- boost::histogram模块实现自定义二维轴的测试程序
- 第1章 计算机基础知识习题答案,职称计算机基础知识习题第一章
- spring使用自定义注解_用Spring组成自定义注释
- 任正非:要提高待遇,敢于和美国争夺人才
- 设计模式 -- 结构模式
- OKR与互联网创业团队
- 翻译:protocol的高阶用法,在Swift 5中使用协议protocol构建自定义集合Collection
- 排版怎么排?八大技巧提升版面设计感
- SU插件|实时联动Lumion LiveSync for SketchUp免费下载(渲染器与草图大师模型同步更新)
- 若程序员们的“反996协议”实行,会发生什么
- 苹果将在圣诞节期间停止App Store审核:因为休假
- win7计算机硬盘加密码,win7系统怎么加密电脑硬盘 win7系统加密电脑硬盘的快速操作方法...
- 携程Java后台开发三面面经
- 我为什么鼓励工程师写 blog?
- 网页自动采集之内涵吧内涵段子自动采集
- 在VB6中生成随机数
热门文章
- 【讨论】读博最多收入的高校是哪个?中国高校硕博补贴大盘点!
- 第三章-分支程序设计代码实例(C++蓝豹子)
- MacOSX 编译Android 4.0的各种问题
- 【Carsim学习】Carsim2019安装教程
- Oracle数据库基础(还在学java吗?不如来看看oracle)
- Android OOBE开发
- 圆弧防线用计算机怎么算,一种圆弧形放线工具的制作方法
- linux安装红帽openshift,Redhat Openshift 单机版安装指南 CRC4.6
- 华为云分布式数据库中间件DDM
- 泉州php编程学校,泉州五中校园网络平台【Moodle平台与校园网络整合】...