[英]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.