如何检测一个精灵在某个点是不是与另一个颜色不同?

Posted

技术标签:

【中文标题】如何检测一个精灵在某个点是不是与另一个颜色不同?【英文标题】:How to detect if a sprite is a different color than another at a certain point?如何检测一个精灵在某个点是否与另一个颜色不同? 【发布时间】:2016-06-16 22:00:06 【问题描述】:

我将尝试直截了当。如果有人知道如何帮助我,我会感到惊讶。

我会尽力描述我需要什么。

我有两个矩形以一定的速度从屏幕上掉下来,一旦这两个掉下来,两个新的就开始下落。您尝试将球放入的两个矩形之间存在间隙。球将是红色、绿色或蓝色。两个矩形的颜色相同,但也可以是红色、绿色或蓝色。我需要以某种方式检测,当我的球进入间隙时,球的颜色和两个矩形的颜色是否相同。这可能吗?

这是随机选择球和矩形颜色的代码。

 var colorBucket = [UIColor]()

func randomColor() -> UIColor 

    if colorBucket.isEmpty 
        fillBucket()
    

    let randomIndex = Int(arc4random_uniform(UInt32(colorBucket.count)))
    let randomColor = colorBucket[randomIndex]
    colorBucket.removeAtIndex(randomIndex)
    return randomColor



func fillBucket() 
    colorBucket = [UIColor.redColor(), UIColor.greenColor(), UIColor.blueColor()]

我想不通。

我在想我需要一个 spritekitnode 附加到每个矩形,当球碰撞时会检查两种颜色是否相同。还有其他方法吗?任何帮助将不胜感激。

This is what it looks like.

【问题讨论】:

矩形和球是SKSpriteNode(s)吗? @appzYourLife 是的。 它们是自定义类吗? @appzYourLife let Wall1 = SKSpriteNode(imageNamed: "Walls") 并 let Ball = SKSpriteNode(imageNamed: "Ball") 我不知道自定义类是什么意思。这就是我所拥有的 在下面看我的答案 【参考方案1】:

当然有可能!

鉴于您的 Rectangle 课程

class Rectangle: SKSpriteNode 
    init(color: SKColor) 
        let texture = SKTexture(imageNamed: "rectangle")
        super.init(texture: texture, color: color, size: texture.size())
    

    required init?(coder aDecoder: NSCoder) 
        fatalError("init(coder:) has not been implemented")
    

还有你Ball

class Ball: SKSpriteNode 
    init(color: SKColor) 
        let texture = SKTexture(imageNamed: "ball")
        super.init(texture: texture, color: color, size: texture.size())
    

    required init?(coder aDecoder: NSCoder) 
        fatalError("init(coder:) has not been implemented")
    

你可以只写比较两个实例

let ball = Ball(color:.redColor())
let rectangle = Rectangle(color:.redColor())

print(ball.color == rectangle.color) // true

更新

您似乎没有使用 SKSpriteNode 的子类化。

事实上你是这样直接使用 SKSpriteNode 的

let wall1 = SKSpriteNode(imageNamed: "Walls")
let ball = SKSpriteNode(imageNamed: "Ball")

在这种情况下,请记住在创建这些精灵时为它们添加颜色

wall1.color = .redColor()
ball.color =  .redColor()

现在您可以按颜色比较它们

if wall1.color == ball.color 
    print("same color!")

【讨论】:

以上是关于如何检测一个精灵在某个点是不是与另一个颜色不同?的主要内容,如果未能解决你的问题,请参考以下文章

检测精灵的颜色

如何让一个组件与另一个组件对应特定功能

JAVA编写类似按键精灵的程序用于游戏 会被检测到么?懂底层工作原理的JAVA高手进

Phaser 2 - 如何检测我何时拖动另一个精灵?

机器学习之逻辑回归

我们如何检测精灵的触摸?