新年快到了!给大家献上一个3D红包雨效果!
思路:
1.用scenekit来创建红包模型 先创建一个长方体,此长方体厚度很薄 然后设置模型的contents为红包的图片
2.用仿真框架让红包掉下来
3.多设置几个源头 但正上方不要设置 否则屏幕经常会给一个红包遮住
关键性代码:
geometerNode.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:nil];
//设置力
NSInteger X = (NSInteger)(arc4random_uniform(9)) - 4;
NSInteger Y = (NSInteger) (1 );
NSInteger Z = (NSInteger)(arc4random_uniform(9)) - 4;
[geometerNode.physicsBody applyForce:SCNVector3Make(X, -Y, Z) atPosition:SCNVector3Make(0.05, 0.05, 0.05) impulse:YES];
static:静态物体不会移动,不会受到力的影响,其他物体击飞不了它, 比如游戏里的墙壁。
dynamic:会受到力的影响,比较小的物体,比如游戏里的野怪。
kinematic:会移动 但不受力影响的物体,比如游戏里的怎么打都打不坏的大门。
在SceneKit中所有的物理对象都是SCNPhysicsBody, 然后需要把该对象绑定到SCNNode的physicsBody实例属性, 然后物理引擎就可以进行仿真模拟了。
录制gif图效果太差,只好让各位自行下载
代码 希望可以随手点个👍
网友评论