Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 1. 数学几何计算基础

  • 2.位移、速度、加速度(向量)

  • 3.向量点乘、叉乘

  • 4.四元数、欧拉角(角度姿态)

  • 5.矩阵

  • 6.射线

  • 7.包围盒

  • 8.第一、三人称漫游

  • 9.漫游-八叉树碰撞检测

  • 10.CannonJS物理引擎

    • 1. 物理引擎CannonJS简介和引入
    • 2. CannonJS自由落体计算
    • 3. 练习-threejs可视化cannon计算结果
    • 4. CannonJS模拟乒乓球下落反弹
    • 5. 练习-修改小球参数
    • 6. 练习-点按钮重复下落
      • 7. CannonJS碰撞事件,碰撞声音
      • 8. 长方体Box碰撞体(箱子下落)
      • 9. 练习题-外部gltf箱子模型
      • 10. 凸多面体ConvexPolyhedron
    • Three.js进阶教程
    • 10.CannonJS物理引擎
    郭隆邦
    2023-10-11
    目录

    6. 练习-点按钮重复下落

    # 练习-点按钮重复下落

    大家可以利用前面学习过的知识,做一个简单的练习题,就是通过HTML按钮控制乒乓球重复下落。

    # 回顾原来的知识点

    前面讲解过,物理碰撞体body只有添加到物理世界world中,才会收到物理世界的影响,比如受到重力影响,你可以注释world.addBody(body);代码测试验证。

    world.gravity.set(0, -9.8, 0);
    world.addBody(body);
    

    # 通过按钮控制小球下落

    document.getElementById('test').addEventListener('click', function () {
        
    })
    
    // 点击按钮后,才把物理小球碰撞体body添加到物理世界
    document.getElementById('test').addEventListener('click', function () {
        world.addBody(body);
    })
    

    # 按钮控制重复下落

    点击按钮,body回到下落的初始位置。

    document.getElementById('test').addEventListener('click', function () {
        body.position.y = 1;//点击按钮,body回到下落的初始位置
        world.addBody(body);//添加到物理世界,才开始下落
    })
    

    注意body没必要重复添加到物理世界中,声明一个变量标记是否已经添加到物理世界中。

    let addBool = false;//标记body是否已经添加到world中
    document.getElementById('test').addEventListener('click', function () {
        body.position.y = 1;//点击按钮,body回到下落的初始位置
        if (!addBool){
            world.addBody(body);//添加到物理世界,才开始下落
            addBool = true;
        }
    })
    
    5. 练习-修改小球参数
    7. CannonJS碰撞事件,碰撞声音

    ← 5. 练习-修改小球参数 7. CannonJS碰撞事件,碰撞声音→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式