簡體   English   中英

有沒有一種方法可以檢測一個UIView是否正在觸摸另一個UIView? 斯威夫特4

[英]Is there a way to detect if a UIView is touching another UIView? Swift 4

我一直在開發一款滾動無盡的亞軍游戲(在Swift 4中),我想檢測玩家是否碰到了方塊/瓷磚。 目前,我正在使用以下代碼:

let centerX = Float(UIScreen.main.bounds.size.width) / 2
for i2 in 0...tiles.count-1 {
    if scrollX + centerX > Float(tilePosition[i2][0] - 60) {
        if scrollX + centerX < Float(tilePosition[i2][0] + 60) {
            if Int(player.center.y) > tilePosition[i2][1] - blockFloatings[playerFrame] {
                if Int(player.center.y) < tilePosition[i2][1] + blockFloatings[playerFrame] {
                    while Int(player.center.y) > tilePosition[i2][1] - blockFloatings[playerFrame] {
                        playerGravity = 0
                        player.center.y = player.center.y - CGFloat(1)
                    }
                }
            }
        }
    }
}

該代碼有效,但是不夠准確。 我有圓的瓷磚,如 ,也與像波浪頂部平鋪

現在,我的代碼假定圖塊是正方形,但有時不是。 如果瓷磚不是正方形,例如水,我想要它,那么當您左右移動時,播放器會上下移動。

如果您要回答這個問題,那么您可能需要了解一些有關當前代碼的信息:

centerX屏幕中間

tiles -所述UIImageView()的塊/區塊

scrollX -X中的滾動

tilePosition包含塊/平鋪位置的數組

blockFloatings播放器UIImageView()將更改圖像,並且每個圖像的高度都不同。 該數組包含玩家不應掉落地面的數字(減去y位置)

playerFrame播放器的圖像ID

player -的UIImageView()表示隊員

playerGravity變量,指示玩家每幀摔落的速度

編輯:您還可以回答沒有辦法。

您可以嘗試使用:

bool CGRectIntersectsRect(CGRect rect1, CGRect rect2);

通過傳遞玩家的框架和圖塊的框架作為參數。

鏈接到文檔:

https://developer.apple.com/documentation/coregraphics/1454747-cgrectintersectsrect

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM