原文链接: 使用手机陀螺仪 完成一个简单的小游戏

上一篇: vue-codemirror 代码编辑器

下一篇: js setTimeout setInterval

通过旋转手机,控制小球的移动

event.beta 属性,表示在沿着X轴的旋转,它的取值范围是[-180, 180)。

控制小球的左右移动

event.gamma 属性,表示在沿着Y轴的旋转,它的取值范围是[-90, 90)。表示上下的移动

当横竖屏切换时,需要将坐标轴进行变换修改

为了避免移动过长,也需要设置一个速率比,对角度进行取模,避免偏转太多出现角度较大的问题

横竖屏切换事件,onorientationchange,在绑定函数时,尽量使用箭头函数,避免出现this指向错误。。。调试这个是真的烦。。。手机端看不了console。。。。

<template><div class="container"><!--<div>--><!--<div>{{nalpha}}</div>--><!--<div>{{nbeta}}</div>--><!--<div>{{ngamma}}</div>--><!--</div>--><div class="ball" ref="ball" id="ball"></div></div>
</template><script>export default {name: "simple-game",data() {return {alpha: 0,beta: 0,gamma: 0,isInit: false,nalpha: 0,nbeta: 0,ngamma: 0,left: 0,top: 0,}},methods: {refresh() {// 根据角度换算为移动速率的比率let rate = 5this.left += parseInt(this.ngamma / rate)// console.log(this.$refs.ball.style)// document.getElementById('ball').style.left = '' + this.left + 'px'this.top += parseInt(this.nbeta / rate)// document.getElementById('ball').style.top = '' + this.top + 'px'this.$refs.ball.style.left = this.left + 'px'this.$refs.ball.style.top = this.top + 'px'// console.log(this.$refs.ball.style.left);},},mounted() {//判断手机横竖屏状态:// 每次屏幕切换时为了方便操作,将小球移至中心let hengshuping = () => {this.left = 0this.top = 0if (window.orientation == 180 || window.orientation == 0) {// alert("竖屏状态!")window.addEventListener("deviceorientation", (event) => {if (!this.isInit) {this.alpha = event.alphathis.beta = event.betathis.gamma = event.gammathis.isInit = true}this.nalpha = event.alpha - this.alphathis.nbeta = event.beta - this.betathis.ngamma = event.gamma - this.gammathis.refresh()});}if (window.orientation == 90 || window.orientation == -90) {// alert("横屏状态!")window.addEventListener("deviceorientation", (event) => {if (!this.isInit) {this.alpha = event.alphathis.beta = event.betathis.gamma = event.gammathis.isInit = true}this.nalpha = (event.gamma - this.gamma) % 180this.nbeta = -(event.gamma - this.gamma) % 90this.ngamma = event.beta - this.betathis.refresh()}, false);}}window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", hengshuping, false);hengshuping()}}
</script><style scoped>.container {width: 100vw;height: 100vh;display: flex;/*position: relative;*/justify-content: center;align-items: center;}.ball {width: 50px;height: 50px;background: deepskyblue;border-radius: 50%;position: relative;}</style>

使用手机陀螺仪 完成一个简单的小游戏相关推荐

  1. c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  2. 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  3. unity编写一个简单的小游戏

    unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...

  4. 用Python代码做一个简单数字小游戏

    #作者是一个十三岁的小男孩. 编辑工具 电脑Python 需要模块 random #今日用代码做一个猜数小游戏 #话不多说,上代码!!! import random number = random.r ...

  5. 用turtle库制作一个简单的小游戏《鸡子大战篮球》

    刚上大学,学习python不到两月半,连简单的字典.元组数据类型都还没有捂熟.这不刚好python小组作业是用turtle库画自己喜欢的图案吗,在我们小组的努力下我们画好了5只小只因,于是我就大胆的进 ...

  6. 使用PlayCanvas制作一个简单的小游戏(一)

    我们使用PlayCanvas做了一个"掂球"的小游戏,在这个小游戏中玩家需要点击落下的足球使之停留在空中. 本教程包含如下主题: 1 场景(Scene)和层级(Hierarchy) ...

  7. 使用PlayCanvas制作一个简单的小游戏(四)

    原文: 足球 足球是掂球游戏的焦点.它响应玩家的输入,响应环境(如重力),发出声音等.它也许是游戏中最复杂的部分.幸运的是,我们会尽可能的深入浅出. ball.js pc.script.attribu ...

  8. 使用PlayCanvas制作一个简单的小游戏(二)

    原文:http://developer.playcanvas.com/zh/tutorials/beginner/keepyup-part-two/ 设置材质 在这个游戏中,我们尽可能的使用了简单的图 ...

  9. 使用PlayCanvas制作一个简单的小游戏(三)

    原文:http://developer.playcanvas.com/zh/tutorials/beginner/keepyup-part-three/ 游戏脚本和输入 在场景的根实体Game上绑定了 ...

最新文章

  1. [mybatis]缓存_二级缓存使用细节
  2. 伪随机交织抑制突发噪声的MATLAB仿真(采用(2,1,3)卷积码)
  3. 数据库基础知识——DML语言
  4. IDEA查看源码时总是出现.class而不是.java源码(解决办法)
  5. python钉钉机器人发送消息_python调用钉钉机器人发送消息
  6. 2020最新android教程,Android教程2020
  7. 语义化标签——HTML
  8. UTF-8 字符处理在 Web 开发中的应用
  9. linux 系统添加字体,linux服务器下添加字体
  10. 合同在项目管理中的优势
  11. c++:std::dec, std::hex, std::oct
  12. 中国最牛天使投资人:30万元投资,回报超50000倍
  13. CTU Open Contest 2019 -A-Beer Barrels
  14. String spilt的使用和常见的坑以及平替方案性能比较
  15. 计算机显示屏知识,计算机配置知识之显示屏
  16. 【官宣】顺丰同城宣布苏炳添出任首位品牌代言人,给你稳稳的幸福
  17. matlab x的平均值符号怎么打出来,教你在Word中输入平均数的符号X上加一横(X拔)...
  18. Pycharm Statistic插件
  19. 安卓学习底层开发学习方法?
  20. 【解决方法】Win10还原默认打开方式图标

热门文章

  1. Pyqt5实现计时器功能
  2. 武汉理工大学计算机专业英语,给大家讲个笑话,武汉理工外语专业400分以上的28人...
  3. simulink中固定大小矩阵和可变大小矩阵创建的几个陷阱
  4. vue中手写一个放大镜功能
  5. 报文分析笔记---常见wireshark报文标记
  6. 彩超检查报告单图片_彩超报告单怎么看
  7. css行高和盒子高区别
  8. Lombok插件的简介
  9. Nginx配置基于ip的虚拟主机
  10. 全景照片做成html,全景嵌入HTML页面插件