gpt4 book ai didi

swift - SpriteKit Hero 移动在节点连接上受阻

转载 作者:行者123 更新时间:2023-11-30 13:11:39 25 4
gpt4 key购买 nike

我的游戏是横向卷轴游戏,因此英雄具有恒定的速度,每次更新都会设置为他的速度。当我用几个“盒子”组成一个楼层时,英雄停在第一个结束和第二个开始的地方。它们大小相同且位于同一 y 轴上,为什么会发生这种情况?

英雄的物理 body :

        self.physicsBody = SKPhysicsBody(rectangleOfSize: rect.size, center: center)
self.physicsBody?.usesPreciseCollisionDetection = true
self.physicsBody?.allowsRotation = false
self.physicsBody?.restitution = 0
self.physicsBody?.categoryBitMask = Category.Hero
self.physicsBody?.collisionBitMask = Category.Floor | Category.Hero | Category.Glass | Category.Obstacle
self.physicsBody?.contactTestBitMask = Category.Obstacle | Category.Glass | Category.Collision | Category.Doors | Category.EBullet | Category.Enemy | Category.Explosion | Category.Plyuha | Category.Slime

障碍物的PhysicsBody:

    self.physicsBody = SKPhysicsBody(rectangleOfSize: size_sprite)
self.physicsBody?.usesPreciseCollisionDetection = true
self.physicsBody?.restitution = 0
self.physicsBody?.allowsRotation = false
self.physicsBody?.pinned = true
self.physicsBody?.categoryBitMask = Category.Obstacle
self.physicsBody?.contactTestBitMask = Category.Bullet | Category.EBullet
self.physicsBody?.collisionBitMask = Category.Hero | Category.Bullet | Category.EBullet

最佳答案

我将创建一个基于边缘的物理体,它可以拉伸(stretch)屏幕的长度来模拟地板。这应该可以防止玩家停在地板碎片的边缘,因为它是连续的边缘。然后你可以尝试在玩家面前放置任何障碍。

像这样设置物理体:

let startPoint = CGPoint() // fill in the desired x and y for start point
let endPoint = CGPoint() // fill in the desired x and y for start point

self.floor.physicsBody = SKPhysicsBody(edgeFromPoint: CGPoint(x: startPoint.x, y: startPoint.y), toPoint: CGPoint(x: endPoint.x, y: endPoint.y))

对于可能阻止玩家的其他障碍,请尝试通过显示物理实体的实际位置来进行调试。可能会有一些你意想不到的东西阻碍玩家前进。

在viewController中,放入

skView.showsPhysics = true

关于swift - SpriteKit Hero 移动在节点连接上受阻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38660530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com