CocosCreator3.8第一节旋转位移触摸

文章详细描述了在使用CC框架开发时如何获取和修改组件参数,以及处理触摸事件如开始、移动、结束和取消的逻辑,包括位移、缩放和设备像素比调整。还涉及了输入事件的监听和处理。
获取组件
修改组件上的参数
/*
 * @Author: Coat 654264424@qq.com
 * @Date: 2024-01-24 17:06:09
 * @LastEditors: Coat 654264424@qq.com
 * @LastEditTime: 2024-01-25 13:22:26
 * @FilePath: \NewProject\assets\Test.ts
 */
import { _decorator, Component, Label, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Test')
export class Test extends Component {
    start() {
        console.log(this); //当前脚本
        console.log(this.node); //归属的节点
        //获得组件
        const a = this.node.getComponent(Label)
        console.log(a);
        //修改组件参数
        a.string='Hello Word'
    }

    update(deltaTime: number) {
        
    }
}



// deltaTime// 电脑刷新率分之1 统一设备间的效果

旋转位移缩放

位移三种方法

 // this.node.setPosition(300,0)
        // //重载接收不同的入参 不同的效果
//        推荐这种方法
        // const p = new Vec3(300,0,0)
        // this.node.setPosition(p)
        
      //  const p = new Vec3()
        // p.x+=300
         //this.node.setPosition(p)

        const p = this.node.getPosition()
        p.x+=300
         this.node.setPosition(p)

//一波性能优化
curpos= new Vec3()
    // curpos = v3()
    start() {
       

        
    }

    update(deltaTime: number) {
        // deltaTime// 电脑刷新率分之1 统一设备间的效果
        this.node.getPosition(this.curpos)
        this.curpos.x+=100*deltaTime
        this.node.setPosition(this.curpos)
    }

旋转

 console.log(this.node.scale);//3d
        // angle 旋转2d
         this.node.angle +=1

触摸

start() {
        // 几个参数 时间类型 回调方法,第三个参数执行上述方法环境
       this.node.on(Node.EventType.TOUCH_START,(event:EventTouch)=>{
        //回调方法
        const uiPos = event.getUILocation()

        console.log(uiPos);
       },this)

        
    }

    update(deltaTime: number) {
       
    }

打印的event
event打印

打印的uiPos 以左下角为0,0
uiPos

触摸的所有事件
/*
 * @Author: Coat 654264424@qq.com
 * @Date: 2024-01-24 17:06:09
 * @LastEditors: Coat 654264424@qq.com
 * @LastEditTime: 2024-01-25 15:59:44
 * @FilePath: \NewProject\assets\Test.ts
 */
import { _decorator, Component, EventTouch, Label, log, Node, Vec3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Test')
export class Test extends Component {
    
    start() {
        // 几个参数 时间类型 回调方法,第三个参数执行上述方法环境
       this.node.on(Node.EventType.TOUCH_START,this.onTouchStart,this)
       this.node.on(Node.EventType.TOUCH_MOVE,this.onTouchMove,this)
       this.node.on(Node.EventType.TOUCH_END,this.onTouchEnd,this)
       this.node.on(Node.EventType.TOUCH_CANCEL,this.onTouchCancel,this)

        
    }
    onTouchStart(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos,'onTouchStart');
        
    }
    onTouchMove(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos);
        console.log(uiPos,'onTouchMove');

        
    }
    // 里面结束
    onTouchEnd(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos);
        console.log(uiPos,'onTouchEnd');
        
    }
    // 外面结束
    onTouchCancel(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos);
        console.log(uiPos,'onTouchCancel');
        
    }
    update(deltaTime: number) {
       
    }
}



例如按下缩放 抬起恢复this.node.setScale(0.5,0.5)
onTouchStart(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos,'onTouchStart');
        this.node.setScale(0.5,0.5)
    }
    onTouchMove(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos);
        console.log(uiPos,'onTouchMove');

        
    }
    // 里面结束
    onTouchEnd(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos);
        console.log(uiPos,'onTouchEnd');
        this.node.setScale(1,1)
        
    }

设备像素比

高端手机用900展示一个圆 低端用100个像素
不加UI相对于屏幕的高度

  onTouchMove(event:EventTouch){
        const uiPos = event.getUILocation()
        console.log(uiPos);
        console.log(uiPos,'onTouchMove');
        // 如果是2k的就不会跟手
        // const dx =event.getDeltaX()
        // const dy =event.getDeltaY()
        // 正常使用带UI的
        const delta = event.getUIDelta()
        const dx =delta.x
        const dy =delta.y
        let x = this.node.position.x
        let y = this.node.position.y

        this.node.setPosition(x + dx,y + dy)
    }

获取节点transform

 onTouchStart(event:EventTouch){
        const uiPos = event.getUILocation()
        //获取当前节点下的坐标 也就是图片
       const tra = this.node.getComponent(UITransform)
       const nodePos = tra.convertToNodeSpaceAR(v3(uiPos.x,uiPos.y,0))
       console.log(nodePos,'nodePos');//相对图片中点
    //   if(nodePos.x>0){
    //    this.node.setPosition(this.node.position.x+50,this.node.position.y)
    //   }else{
     //   this.node.setPosition(this.node.position.x-50,this.node.position.y)

     //  }
       // 第二种简便写法
       const dx = nodePos.x > 0 ? 50 : -50
       this.node.setPosition(this.node.position.x + dx ,this.node.position.y)
    }

输入事件

import { _decorator,KeyCode,input, Input,Component, EventTouch, Label, log, Node, UITransform, v3, Vec3, EventKeyboard } from 'cc';
// 输入事件
        input.on(Input.EventType.KEY_DOWN,this.onKeyDown,this)
        onKeyDown(event:EventKeyboard){
        //按 w 的时候会是true
        console.log(event.keyCode === KeyCode.KEY_W);
        
    }

下一节缓动系统

Cocos Creator 3.8 是一款在游戏开发领域中广泛应用的跨平台开发引擎,它为开发者提供了更强大的工具和功能,以提升开发效率并支持更多目标平台。以下是关于 Cocos Creator 3.8 的相关信息: ### 使用指南 对于新用户来说,创建第一个项目是熟悉 Cocos Creator 的关键步骤。从安装 Cocos Creator 到创建项目的基本流程,再到理解项目的初始结构和基础操作,这些内容可以帮助开发者逐步上手该游戏引擎[^2]。 此外,在实际开发过程中,开发者可能需要与原生代码进行交互,例如在 iOS 平台上获取设备 UUID。为此,确保 Xcode 项目和 Cocos Creator 项目正确配置以支持调用。打开 Xcode 项目,选择你的项目文件,并检查 Objective-C Bridging Header 是否已正确设置,同时包含头文件 `#import "DeviceHelper.h"`。最后,在 Cocos Creator 中确保构建目标设置为 iOS,然后构建并运行项目[^3]。 ### 更新日志 Cocos Creator 3.8 版本进一步改进了其跨平台开发能力。虽然具体更新内容没有详细列出,但可以预期的是,该版本优化了现有功能,并增加了对新平台的支持,帮助开发者更加轻松地实现跨平台开发[^1]。 ### 功能介绍 Cocos Creator 3.8 提供了多种功能来增强开发者的体验。其中包括但不限于: - 改进的 UI 编辑器:允许开发者更高效地设计和调整用户界面。 - 更好的性能优化:通过底层渲染管线的优化,提高了游戏的运行效率。 - 增强的物理系统:引入了更精确的碰撞检测机制和更灵活的物理组件。 - 对虚拟现实(VR)的支持:使得开发者能够更容易地创建沉浸式的 VR 游戏体验[^2]。 为了充分利用这些新功能和技术,建议开发者时刻关注 Cocos Creator 的最新动态,以便及时了解更新信息并将其应用到自己的项目中[^1]。 ```javascript // 示例:一个简单的 Cocos Creator 脚本示例,用于初始化场景 cc.Class({ extends: cc.Component, properties: { // 在这里定义属性 }, onLoad () { cc.log("Scene loaded!"); // 初始化代码 } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值