-1
我有2個帶紋理節點(SKSpriteNode),我試圖創建一些動畫,當節點靠近另一個帶有y軸的節點(範圍100 - 0)並且動畫在此處開始時時刻。 我試圖做一些類似於割繩子的事情,當糖果在Om-Nom附近時,他張開嘴要抓住糖果。 幫我看看代碼,請( 對不起,我的英語當節點靠近時啓動動畫
我有2個帶紋理節點(SKSpriteNode),我試圖創建一些動畫,當節點靠近另一個帶有y軸的節點(範圍100 - 0)並且動畫在此處開始時時刻。 我試圖做一些類似於割繩子的事情,當糖果在Om-Nom附近時,他張開嘴要抓住糖果。 幫我看看代碼,請( 對不起,我的英語當節點靠近時啓動動畫
你可以實現這種計算的少量代碼行:
class GameScene: SKScene {
var sprite1 : SKSpriteNode!
var sprite2 : SKSpriteNode!
var range : CGFloat = 0.0
override func didMoveToView(view: SKView) {
self.range = randomCGFloat(0.0, max: 100.0)
sprite1 = SKSpriteNode.init(color: SKColor.blueColor(), size: CGSizeMake(40,40))
sprite2 = SKSpriteNode.init(color: SKColor.redColor(), size: CGSizeMake(40,40))
addChild(sprite1)
addChild(sprite2)
// Try to generate 10 positions and check relative distance
print("The range to check is :\(range)")
for i in 0...9 {
print("\(i)) time:")
let isNear = checkDistanceBtwSprites()
if isNear {
// do whatever you want with your sprites
}
}
}
func checkDistanceBtwSprites()->Bool{
sprite1.position = getRandomPosition(40, maxX: 40, minY: 0, maxY: 320)
sprite2.position = getRandomPosition(40, maxX: 40, minY: 0, maxY: 320)
let distance = getDistance((sprite1.position), p2: (sprite2.position))
print("distance for sprite1 and sprite2 is : \(distance)")
if distance <= self.range {
print("# -> success: sprite1 is near sprite2")
return true
}
return false
}
func getRandomPosition(minX: CGFloat, maxX: CGFloat, minY:CGFloat, maxY:CGFloat)->CGPoint {
return CGPointMake(randomCGFloat(minX, max: maxX),randomCGFloat(minY, max: maxY))
}
func randomCGFloat(min: CGFloat, max: CGFloat)->CGFloat {
return (CGFloat(arc4random())/CGFloat(UINT32_MAX)) * (max - min) + min
}
func getDistance(p1:CGPoint,p2:CGPoint)->CGFloat {
let xDist = (p2.x - p1.x)
let yDist = (p2.y - p1.y)
return CGFloat(sqrt((xDist * xDist) + (yDist * yDist)))
}
}
輸出:
我不不知道這個項目是否與你的舊問題有關聯,你看看我的答案嗎? –