COCOS:(飞机大战03)绑定触摸方法,控制主角的移动和移动边界的限制

news2024/9/25 21:26:07

飞机大战知识点总结

1.创建Player.ts文件,把该文件添加到Player组件上
在这里插入图片描述
2.编写Player.ts

import { _decorator, Component, EventTouch, Input, input, Node, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Player')
export class Player extends Component {
    protected onLoad(): void {
    	// 1. 注册触摸事件
        input.on(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);
    }
    protected onDestroy(): void {
        // 2.注销触摸事件
        input.off(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);
    }

    // 触摸方法
    onTouchMove(event:EventTouch){
    	// this.node.position:获取自身Player的位置
        // event中 getDeltaX(),getDeltaY():用来获取移动过程中的位置偏移
        // 通过这个偏移,来控制Player的位置偏移
        // this.node.setPosition:设置x,y,z轴的位置 
        const p = this.node.position;
        this.node.setPosition(p.x+event.getDeltaX(),p.y+event.getDeltaY(),p.z)
    }
}

上述代码保存在编辑器里运行看下效果,会发现飞机会移动到视图外边,

下边就要限制移动边界的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过触摸移动,得到了4个边界值,x轴为-230230,y轴为380-380
有个了这个边界值,需要再把Player.ts优化下代码。

import { _decorator, Component, EventTouch, Input, input, Node, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Player')
export class Player extends Component {
    protected onLoad(): void {
        // 1. 注册触摸事件
        input.on(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);
    }
    protected onDestroy(): void {
        // 2.注销触摸事件
        input.off(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);
    }
    // 触摸方法
    onTouchMove(event:EventTouch){
        // this.node.position:获取自身Player的位置
        // event中 getDeltaX(),getDeltaY():用来获取移动过程中的位置偏移
        // 通过这个偏移,来控制Player的位置偏移
        // this.node.setPosition:设置x,y,z轴的位置 

        const p = this.node.position;

        // 要移动的:目标坐标
        let targetPos = new Vec3(p.x+event.getDeltaX(),p.y+event.getDeltaY(),p.z);

        if(targetPos.x < -230){
            targetPos.x = -230
        }

        if(targetPos.x > 230){
            targetPos.x = 230
        }

        if(targetPos.y < -380){
            targetPos.y = -380
        }

        if(targetPos.y > 380){
            targetPos.y = 380
        }
        
        this.node.setPosition(targetPos)
    }
}

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

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

相关文章

2024年性价比蓝牙耳机怎么选?四款爆买百元耳机品牌推荐!

在科技日新月异的今天&#xff0c;越来越多的消费者选择无线蓝牙耳机&#xff0c;以摆脱有线耳机的束缚&#xff0c;享受更加自由的智能耳机使用体验。面对市场上众多的耳机品牌&#xff0c;究竟2024年性价比蓝牙耳机怎么选&#xff1f;&#xff0c;为了帮助大家选购合适的蓝牙…

【基础算法总结】二分查找

目录 一&#xff0c;二分查找算法介绍二&#xff0c;算法原理和代码实现704.二分查找34.在排序数组中查找元素的第一个和最后一个位置69.x的平方根35.搜索插入位置852.山脉数组的峰顶索引162.寻找峰值153.寻找旋转排序数组中的最小值LCR173.点名 三&#xff0c;算法总结 一&…

高性能反向代理--HAProxy

文章目录 Web架构负载均衡介绍为什么使用负载均衡负载均衡类型 HAProxy简介应用场景HAProxy是什么HAProxy功能 脚本安装HAProxy基础配置global多进程和线程HAProxy日志配置项 Proxies配置-listen-frontend-backendserver配置 frontendbackend配置实例子配置文件 HAProxy调度算法…

html+css网页设计 旅游 蜘蛛旅行社5个页面

htmlcss网页设计 旅游 蜘蛛旅行社5个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…

MemFire Cloud为何短短几年变成这样?

在软件开发的世界里&#xff0c;总有一些工具能够迅速崛起&#xff0c;成为开发者们心中的宠儿。MemFire Cloud&#xff0c;就是这样一个在短短几年内迅速崭露头角的存在。它不仅改变了开发者的工作方式&#xff0c;更成为了独立开发者的得力助手。今天&#xff0c;我们就来聊聊…

FALCON:打破界限,粗粒度标签的无监督细粒度类别推断,已开源| ICML‘24

在许多实际应用中&#xff0c;相对于反映类别之间微妙差异的细粒度标签&#xff0c;我们更容易获取粗粒度标签。然而&#xff0c;现有方法无法利用粗标签以无监督的方式推断细粒度标签。为了填补这个空白&#xff0c;论文提出了FALCON&#xff0c;一种从粗粒度标记数据中无需细…

CentOS7虚拟机下安装及使用Docker

文章目录 一&#xff0c;准备工作二、安装Docker三、启动Docker四、验证Docker五、使用Docker六&#xff0c;卸载Docker 有一个Centos7的虚拟机&#xff0c;想要安装个docker测试一些docker用法和熟悉命令 一&#xff0c;准备工作 1&#xff0c;使用uname -r命令检查系统内核…

价值流架构指南:构建业务创新与竞争优势的全面方法论

如何通过价值流引领企业数字化转型&#xff1f; 在当前数字化转型的背景下&#xff0c;企业面临的挑战日益复杂化&#xff1a;如何更快响应市场变化&#xff1f;如何优化资源配置提升效率&#xff1f;如何确保客户体验始终处于行业领先&#xff1f;《价值流指南》由The Open G…

Java实现简易计算器功能(idea)

目的&#xff1a;写一个计算器&#xff0c;要求实现加减乘除功能&#xff0c;并且能够循环接收新的数据&#xff0c;通过用户交互实现。 思路&#xff1a; &#xff08;1&#xff09;写4个方法&#xff1a;加减乘除 &#xff08;2&#xff09;利用循环switch进行用户交互 &…

解决windows中项目启动端口被占用报错

1.在启动项目时报错端口被占用 解决: 1.cmd命令行输入命令: netstat -ano | findstr “8000” 2.可以看到PID为8448&#xff0c;下面只要将该PID关闭即可&#xff0c;有两种方法: ①在任务管理器中找到PID为8448的服务结束 ②命令行输入: >taskkill /PID 8448 /F 3.再查…

关于低代码平台几个新技术应用的实践体验

最近在整理平台的基本功能使用体验&#xff1a; 1&#xff0c;使用低码平台&#xff0c;创建用户业务站点交互原型&#xff0c;基本是可行的。虽然相对于专业的 墨刀、蓝湖、figma 等在用户体验上还有差距&#xff0c;但对于普通应用差别不大。 2&#xff0c;根据UI/UE原型&am…

力扣(LeetCode)每日一题 2181. 合并零之间的节点

题目链接https://leetcode.cn/problems/merge-nodes-in-between-zeros/description/?envTypedaily-question&envId2024-09-09 题目描述 给你一个链表的头节点 head &#xff0c;该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对…

HNU-2023电路与电子学-CPU综合设计

写在前面&#xff1a; 本次实验是课程的最后一次实验&#xff0c;要求按照指导书的说明将之前的板块整合成一个完整的CPU&#xff0c;建议大家每连接一个板块都进行一次仿真验证&#xff0c;保证能正常运行且功能正常&#xff0c;如果等到CPU组装好再调试工作量较大并且有些错…

如何恢复最近删除的文件[Windows Mac]

可以通过多种方式删除文件。因此&#xff0c;用户需要恢复他们不小心删除的文件的情况并不少见。 好消息是&#xff0c;用户至少通常可以在删除最近删除的文件后几天或几周内恢复它们。 回收站是 Windows 中的文件删除保护措施&#xff0c;可以轻松恢复文件。 除非另有配置&…

第二证券:科创板股票交易规则,科创板新手可以买吗?

科创板是独立于现有主板商场的特别板块&#xff0c;面向的是国际科技前沿、经济主战场、国家严峻需求&#xff0c;首要服务于契合国家战略、打破要害核心技术、商场认可度高的科技立异企业。 科创板是独立于现有主板商场的特别板块&#xff0c;面向的是国际科技前沿、经济主战…

二叉树 - 验证二叉搜索树

98. 验证二叉搜索树 方法一&#xff1a;辅助数组 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null :…

WPF中创建横向的ListView

在WPF中&#xff0c;要创建横向的ListView&#xff0c;您可以通过设置ItemsControl的ItemsPanel来改变其项的排列方向。以下是一个简单的示例&#xff0c;展示了如何将ListView的项横向排列&#xff1a; 在这个例子中&#xff0c;WrapPanel用于横向排列其子元素&#xff0c;而…

本地Linux服务器使用docker搭建DashDot并实现公网实时监测服务器信息

文章目录 前言1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用3. 本地访问DashDot服务4. 安装cpolar内网穿透5. 固定DashDot公网地址 前言 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实…

C语言 ——— 学习并使用条件编译指令

目录 何为条件编译指令 常见的条件编译指令 学习条件编译指令 使用条件编译指令 在程序预编译阶段&#xff0c;条件编译指令的代码转换 多分支的条件编译指令 何为条件编译指令 在编译一个程序的时候&#xff0c;如果要将一条语句&#xff08;一组语句&#xff09;选择编…

Redis学习Day2——Redis基础使用

扩展阅读推荐: Redis 教程 | 菜鸟教程 (runoob.com) 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 细说 Redis 九种数据类型和应用场景_redis数据类型及应用场景-CSDN博客 一、命令篇 1.1 Redis的命令分类 Redis是典型的K-V型数据库,key标识字符串,而value包含了很…