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缓存数据到本地

  1. cc.sys.localStorage.setItem('help', '999999999999999'); //存储数据
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很高兴为您回答!Cocos Creator是一款基于Cocos2d-x框架的游戏开发工具,提供了一个友好的图形化界面和丰富的功能,方便开发者快速制作游戏。 如果您想学习Cocos Creator,以下是一些学习资源: 1. 官方文档:Cocos Creator官方网站提供了详细的开发文档和教程,是学习的第一步。 2. 视频教程:您可以在YouTube或者Bilibili上搜索Cocos Creator视频教程,从中学到更多实用的技巧。 3. 开源项目:GitHub上有许多Cocos Creator开源项目,您可以通过阅读代码来加深对Cocos Creator的理解。 4. 论坛和社区:Cocos官方论坛和社区是您寻求帮助和交流的好地方。 希望这些资源能帮助您快速学习Cocos Creator,开发出更多精彩的游戏。 ### 回答2: Cocos Creator是一款面向游戏开发者的跨平台游戏引擎,它具有易用性、高效性、灵活性和扩展性的特点,因此备受开发者青睐。学习Cocos Creator的教程将帮助您深入了解引擎的功能和使用方法。 首先,您可以通过官方网站或在线社区获得Cocos Creator学习教程。官方网站上提供了大量的教程和文档,包括入门教程、项目案例和API文档等。这些教程以简明的语言和丰富的示例代码,帮助开发者逐步了解Cocos Creator的各个模块,如场景编辑、粒子系统、动画和物理系统等。 此外,Cocos Creator的在线社区也是学习的宝贵资源之一。社区中有众多开发者分享自己的心得和经验,您可以在其中提问、参与讨论,从中获取解决问题的方法和学习的灵感。 除了官方提供的教程和社区资源,您还可以参考一些优秀的第三方教程。这些教程可能以书籍、视频教程或博客的形式存在,通过借鉴他人的经验,您可以更加深入地了解Cocos Creator的使用技巧和开发实践。 最后,除了学习教程,实践也是学习Cocos Creator的重要一环。通过自己亲自动手完成一些小项目或实验,您可以更好地理解和掌握引擎的各个功能。在实践中遇到问题时,可以利用教程和社区资源进行查找和求助,以加深对Cocos Creator的理解。 总之,通过官方教程、社区资源以及第三方教程的学习,结合自己的实践经验,您将能够逐步提高自己的Cocos Creator开发技能,实现更加出色的游戏开发成果。 ### 回答3: Cocos Creator是一款面向游戏开发的跨平台开发工具,学习教程涵盖了从入门到进阶的内容,可以帮助开发者快速掌握该工具的使用。 首先,Cocos Creator学习教程介绍了该工具的基本概念和操作界面,帮助用户熟悉工具的各个模块和功能。教程会详细介绍如何创建项目、导入资源、设计场景等基础操作,让开发者对Cocos Creator有一个全面的了解。 其次,教程会介绍如何利用Cocos Creator进行游戏的开发。开发者可以学习到如何创建游戏对象、添加组件、编写脚本等内容,通过实践项目,了解游戏开发的整个流程。教程还会介绍如何添加动画效果、碰撞检测、物理模拟等高级功能,让游戏更加生动和有趣。 除了游戏开发,Cocos Creator还支持跨平台的应用开发。教程会介绍如何使用Cocos Creator进行应用的开发,包括UI设计、用户交互、数据存储等方面的内容。开发者可以学习到如何调用原生平台的API,实现更多功能和扩展。 最后,教程会提供一些实战案例供开发者参考,让他们可以更好地理解和应用所学知识。此外,Cocos Creator官方还提供了丰富的在线文档和社区支持,开发者可以通过官方网站和论坛获取更多资料和帮助。 总之,通过Cocos Creator学习教程,开发者可以系统地学习该工具的使用方法,并掌握游戏开发和应用开发的基本技能。无论是初学者还是有一定经验的开发者,都可以从中受益,提升自己的开发能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞飞翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值