瞄准器!3D入门实战!拇指射箭!Cocos Creator 3D !
时间:2022-07-23
本文章向大家介绍瞄准器!3D入门实战!拇指射箭!Cocos Creator 3D !,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
瞄哪打哪!超简单的射线检测!提供试玩和完整项目!
效果预览
原理
在 Cocos Creator 3D
刚出来时, 写了一个简单的拇指射箭(点击阅读) 。
不过,当时的瞄准发射计算是以某一个系数来控制的。
这感觉不太对。
还是用一个射线检测去处理这个瞄准结果吧。
首先,通过摄像机,把瞄准器的位置转到屏幕坐标。
const screenPoint = this.camera_main.worldToScreen(this.NodePos_bows.node.worldPosition);
然后,在通过摄像机做出一条射线。
const outRay = this.camera_main.screenPointToRay(screenPoint.x, screenPoint.y);
最后通过射线计算出终点位置。
这边用分轴思想。
因为z
轴坐标是确定的,可以先计算出z
轴的方向长度比例。
const targetZ = this.NodePos_target.z;
const dir_t = (targetZ - outRay.o.z) / outRay.d.z;
再根据这个比例,计算出x
和y
坐标就可以啦。
const targetX = outRay.o.x + outRay.d.x * dir_t;
const targetY = outRay.o.y + outRay.d.y * dir_t;
小伙伴们学会了么?
小结
坐标转换!摄像机!射线!
以上为白玉无冰使用 Cocos Creator 3D v1.1.2
实现 "3D瞄准器"
的技术分享。欢迎分享给身边的朋友!
知识不过是潜在的力量,只有将它组织成明确的行动计划,并指引它朝着某个明确目的发挥作用的时候,知识才是力量。
https://github.com/baiyuwubing/cocos-creator-3d-examples
- 微信企业付款到个人钱包引发的坑之反思~!
- Intellij idea创建javaWeb以及Servlet简单实现
- 设计模式之代理模式之读写分离!!!
- Phantomjs+Nodejs+Mysql数据抓取(1.数据抓取)
- Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)
- 深入浅出Redis-redis底层数据结构(上)
- Linux下自动化监控内存、存储空间!
- 深入浅出Redis-redis底层数据结构(下)
- Spring-boot:快速搭建微框架服务
- Mysql重要参数说明
- 深入Java虚拟机--判断对象存活状态
- 梯度下降法快速教程 | 第一章:Python简易实现以及对学习率的探讨
- 梯度下降法快速教程 | 第二章:冲量(momentum)的原理与Python实现
- Java 序列化与反序列化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL 8.0 新特性:快速加列
- php判断电子邮件是否正确办法
- 用Laravel Sms实现laravel短信验证码的发送的实现
- kubernetes 近期进展 - 1.14-1.19
- Kubernetes 1.19.0——cronjob
- php获取微信openid方法总结
- Laravel 关联模型-关联新增和关联更新的方法
- 如何解决PHP获取不到SESSION信息之一般情况
- PHP实现通过二维数组键值获取一维键名操作示例
- laravel 判断查询数据库返回值的例子
- laravel框架数据库配置及操作数据库示例
- laravel 输出最后执行sql 附:whereIn的使用方法
- laravel框架模型、视图与控制器简单操作示例
- Laravel关系模型指定条件查询方法
- 在laravel中使用with实现动态添加where条件