前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SceneKit_入门09_物理身体

SceneKit_入门09_物理身体

作者头像
酷走天涯
发布2022-05-13 15:48:52
4580
发布2022-05-13 15:48:52
举报

SceneKit_入门01_旋转人物

SceneKit_入门02_如何创建工程

SceneKit_入门03_节点

SceneKit_入门04_灯光

SceneKit_入门05_照相机

SceneKit_入门06_行为动画

SceneKit_入门07_几何体

SceneKit_入门08_材质

SceneKit_入门09_物理身体

SceneKit_入门10_物理世界

SceneKit_入门11_粒子系统

SceneKit_入门12_物理行为

SceneKit_入门13_骨骼动画

SceneKit_中级01_模型之间的过渡动画

SceneKit_中级02_SCNView 详细讲解

SceneKit_中级03_切换照相机视角

SceneKit_中级04_约束的使用

SceneKit_中级05_力的使用

SceneKit_中级06_场景的切换

SceneKit_中级07_动态修改属性

SceneKit_中级08_阴影详解

SceneKit_中级09_碰撞检测

SceneKit_中级10_滤镜效果制作

SceneKit_中级11_动画事件

SceneKit_高级01_GLSL

SceneKit_高级02_粒子系统深入研究

SceneKit_高级03_自定义力

SceneKit_高级04_自定义场景过渡效果

SceneKit_高级05 检测手势点击到节点

SceneKit_高级06_加载顶点、纹理、法线坐标

SceneKit_高级07_SCNProgram用法探究

SceneKit_高级08_天空盒子制作

SceneKit_高级09_雾效果

SceneKit_大神01_掉落的文字

SceneKit_大神02_弹幕来袭

SceneKit_大神03_navigationbar上的3D文字

让学习成为一种习惯

今天带大家熟悉一下,SceneKit 游戏引擎中都有那几种物理身体,他们的作用是什么!

话不多少直接进入主题

什么是物理身体?

物理知识,告诉我们,力可以作用到物体上,物体一般都是有质量的,有质量的物体,力才能对它起作用。根据F= m*a; 这里的m(质量) 我们认为就是物理身体的一部分属性,还有一个就是形状,比如这个正方体,力加到面上,和力作用到几个顶点上,产生的效果完全是不一样的。

SceneKit 游戏引擎中提供了三种物理身体的属性,下面分别介绍.

  • 静态身体(StaticBody)

Scenekit_03.gif

理解:

动画下面的柱子添加了静态的物理身体,你可以这样理解,它有一个很大的质量。外力对他不起作用。

  • 动态身体(Dynamic)

让学习成为一种习惯

理解:

你可以这样理解,这个物体有自己的质量,并且不是无限大,能够收到力的作用。

  • 运动身体(kinematic)

学习要多思考

提示:

感觉和静态身体没有什么区别,这时候,我们要找出他们的区别来,就只能各种尝试了!当然官网也是有说明的,对于爱折腾的我,就喜欢先猜测一下.

尝试1:

我们设置下面的柱子为静态身体,球也为静态身体,给球设置一个向下移动的行为

让思考也变成习惯

尝试2:

设置下面的柱子为静态身体,球为运动身体

让思考也变成习惯

尝试3:

设置下面的柱子为动态身体,球为动态身体

思考力决定你能走多远

尝试4:

设置下面的柱子为动态身体,球为运动身体

多思考就能发现新大陆

总结:

  1. 静态身体 不能主动给物体施作用,不能和动态身体和运行身体起作用
  2. 动态物体 能够作用动态物体,但是不是作用静态身体和运动身体,但能被运动身体作用
  3. 运动身体 不能作用静态身体,也不能被其他身体作用,但是作用动态身体
  4. 如何创建物理身体

他是(节点)SCNNode的一个属性

代码语言:javascript
复制
@property(nonatomic, retain, nullable) SCNPhysicsBody *physicsBody NS_AVAILABLE(10_10, 8_0);

下面是三种物理身体的创建方法

代码语言:javascript
复制
// 静态身体创建
sphereNode.physicsBody = [SCNPhysicsBody staticBody];
// 动态身体创建
sphereNode.physicsBody = [SCNPhysicsBody dynamicBody];
// 运动身体创建
sphereNode.physicsBody = [SCNPhysicsBody kinematicBody];

我们刚才说过,物理身体是有形状的,如果你不指定,默认为几何模型自身的形状,那我们怎么自定义呢?

代码语言:javascript
复制
+ (instancetype)bodyWithType:(SCNPhysicsBodyType)type shape:(nullable SCNPhysicsShape *)shape;
@property(nonatomic, retain, nullable) SCNPhysicsShape *physicsShape;

怎么使用能?现在暂时不讲解,中级,高级,大神篇都不会讲,我们到超神篇讲解! 好了,今天的知识你掌握了吗?


代码库,听说经常给人点赞都当老板了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 话不多少直接进入主题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档