- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一款太空入侵者游戏,其中有许多敌舰向您驶来,您必须向它们射击。
当玩家触摸屏幕时,玩家飞船会向敌舰发射子弹。
我明白了,每当一颗子弹碰到敌舰时,它就会从父舰上移除。但是我无法得到它,因此需要 2 颗子弹才能将敌舰从母舰上移走。出于某种原因,每当另一艘敌舰被召唤到现场时,敌人的生命就会自行重置。怎样才能让每艘敌舰都有自己独立的生命,并且不影响其他敌舰的生命?
这是敌人类:
public class Villain: SKSpriteNode {
var life = 2
init(){
let texture = SKTexture(imageNamed: "Villain")
var life = 2
print("number of lives: ", life)
super.init(texture: texture, color: SKColor.clear, size: texture.size())
self.name = "villain"
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
这里是调用Enemy类的GameScene类
func VillainRight(){
let TooMuch = self.size.width
let point = UInt32(TooMuch)
let VillainR = Villain()
VillainR.zPosition = 2
VillainR.position = CGPoint(x: self.frame.minX,y: CGFloat(arc4random_uniform(point)))
//This code makes the villain's Zposition point towards the SpaceShip
let angle = atan2(SpaceShip.position.y - VillainR.position.y, SpaceShip.position.x - VillainR.position.x)
VillainR.zRotation = angle - CGFloat(M_PI_2)
let MoveToCenter = SKAction.move(to: CGPoint(x: self.frame.midX, y: self.frame.midY), duration: 15)
//Physics World
VillainR.physicsBody = SKPhysicsBody(rectangleOf: VillainR.size)
VillainR.physicsBody?.categoryBitMask = NumberingPhysics.RightV
VillainR.physicsBody?.contactTestBitMask = NumberingPhysics.Laser | NumberingPhysics.SpaceShip
VillainR.physicsBody?.affectedByGravity = false
VillainR.physicsBody?.isDynamic = true
VillainR.run(MoveToCenter)
addChild(VillainR)
}
这里是 didBeginContact 方法的一部分:
//LASERS HIT ENEMY CHECK
if BodyOne.categoryBitMask == NumberingPhysics.Laser && BodyTwo.categoryBitMask == NumberingPhysics.LeftV{
run(VillainGone)
ToNextLevel -= 1
if BodyTwo.node != nil{
MakeExplosions(BodyTwo.node!.position)
}
BodyTwo.node?.removeFromParent()
BodyOne.node?.removeFromParent()
}
if BodyOne.categoryBitMask == NumberingPhysics.Laser && BodyTwo.categoryBitMask == NumberingPhysics.RightV{
ToNextLevel -= 1
if BodyTwo.node != nil{
MakeExplosions(BodyTwo.node!.position)
}
run(VillainGone)
BodyOne.node?.removeFromParent()
BodyTwo.node?.removeFromParent()
}
}
回顾:
我想要做的就是让敌舰在 2 颗子弹碰到它时从 Parent 中移除。并且敌方生命相互独立(如果一艘敌舰还剩下 1 条生命,那么如果另一艘敌舰被召唤到现场,它不会重置回 2)。
1 Câu trả lời
这是您问题的示例解决方案(这是一个 macOS 项目,如果您要转换,只需将 mouseDown
替换为 touchesBegan
).
点击屏幕观看反派生命值耗尽,当达到 0 时反派将死亡并从场景中移除:
let category1 = UInt32(1)
let category2 = UInt32(2)
class Villain: SKSpriteNode {
var lives = 2
var hitThisFrame = false
init(color: SKColor, size: CGSize) {
super.init(texture: nil, color: color, size: size)
let pb = SKPhysicsBody(rectangleOf: self.size)
pb.categoryBitMask = category1
pb.contactTestBitMask = category2
self.physicsBody = pb
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class Hero: SKSpriteNode {
init(color: SKColor, size: CGSize) {
super.init(texture: nil, color: color, size: size)
let pb = SKPhysicsBody(rectangleOf: self.size)
pb.categoryBitMask = category2
pb.contactTestBitMask = category1
self.physicsBody = pb
}
required init?(coder aDecoder: NSCoder) { fatalError() }
}
class GameScene: SKScene, SKPhysicsContactDelegate {
let villain = Villain(color: .blue, size: CGSize(width: 50, height: 50))
let hero = Hero (color: .green, size: CGSize(width: 50, height: 50))
override func didMove(to view: SKView) {
physicsWorld.contactDelegate = self
physicsWorld.gravity = CGVector.zero
hero.position.y -= 100
addChild(villain)
addChild(hero)
}
func didBegin(_ contact: SKPhysicsContact) {
let contactedBodies = contact.bodyA.categoryBitMask + contact.bodyB.categoryBitMask
if contactedBodies == category1 + category2 {
// Find which one of our contacted nodes is a villain:
var vil: Villain
if let foundVil = contact.bodyA.node as? Villain {
vil = foundVil
} else if let foundVil = contact.bodyB.node as? Villain {
vil = foundVil
} khác {
fatalError("one of the two nodes must be a villain!!")
}
if vil.hitThisFrame {
// Ignore a second contact if already hit this frame:
trở lại
} khác {
// Damage villain:
vil.lives -= 1
print(" vil lives: \(vil.lives)")
vil.hitThisFrame = true
if vil.lives == 0 {
// Kill villain:
print("villain is dead!!!")
vil.physicsBody = nil
vil.removeFromParent()
}
}
}
}
override func didSimulatePhysics() {
// Reset hero position (so as to not trigger another didBegin()
hero.position = CGPoint(x: 0, y: -100)
// Allow villain to be hit again next frame:
villain.hitThisFrame = false
}
override func mouseDown(with event: NSEvent) {
// Trigger didBegin():
hero.position = villain.position
}
}
关于swift - 如何在多次点击时删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731410/
Tất cả những khác biệt đã biết giữa SQLite, Nhà cung cấp nội dung và Tùy chọn chia sẻ. Nhưng tôi muốn biết khi nào sử dụng SQLite hoặc Content Provider hoặc
CẢNH BÁO: Tôi đang làm việc với một backend mà tôi không kiểm soát hoàn toàn, vì vậy tôi đang vật lộn với một số cân nhắc trong Backbone có thể được giải quyết tốt hơn ở nơi khác... thật không may, tôi không có lựa chọn nào khác ngoài việc giải quyết chúng ở đây! Vì vậy,
Tôi đã vật lộn cả ngày rồi. Biểu thức tìm kiếm theo kiểu gõ đầu của tôi hoạt động hoàn hảo với dữ liệu json từ xa. Nhưng khi tôi thử sử dụng cùng dữ liệu json làm dữ liệu tìm nạp trước thì không có gợi ý nào cả. Sau khi nhấp vào dấu hiệu đầu tiên, tôi nhận được thông báo được xác định trước "Không tìm thấy bất kỳ thứ gì...", với kết quả
Tôi đang tạo một chương trình mô phỏng xổ số NHL, trong đó phải có một JTextField ở bên phải màn hình và quả bóng dự thảo nảy được vẽ ở bên trái. Tôi đã tạo một lớp có tên là Ball triển khai Runnable và trong Draf chính của tôi
Câu hỏi này đã có câu trả lời: Làm thế nào để tính khoảng thời gian trong Java và định dạng đầu ra? (18 câu trả lời) Đã đóng 9 năm trước. Đây là mã của tôi
Tôi có một ứng dụng ASP.NET Web API đang chạy trên phiên bản IIS cục bộ của mình. Ứng dụng web được cấu hình bằng CORS. Phương pháp Web API mà tôi gọi tương tự như: [POST("/API/{foo}/{ba
Tôi lấy thời gian và ngày tháng đầu vào của người dùng như sau: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePicker
Liệu việc nới lỏng tiêu chuẩn “hàng xóm” có đủ không, hay có những hành động tiêu chuẩn khác có thể được thực hiện? Câu trả lời hay nhất Nếu tất cả các giải pháp liền kề đều là Tabu, có vẻ như danh sách Tabu của bạn quá dài hoặc chính sách phát hành của bạn quá nghiêm ngặt. Độ dài danh sách Tabu tốt là
Tôi đang đọc ví dụ mã này từ cppreference: #include #include #include #include template void print_queue(T& q)
Tôi phát điên mất, tôi đang cố gắng hiểu hành vi của chú giải công cụ nhưng không thành công. 1. Vấn đề đầu tiên là khi tôi thử sử dụng nó trong sự kiện nhấp chuột thông qua plugin (Nút 1) -> Nếu bạn vào Fiddle, bạn sẽ thấy bên trong 'Nội dung' rằng hàm được gọi ở mỗi lần nhấp chuột
Tôi có đoạn mã sau trong một thành phần chức năng: const [folder, setFolder] = useState([]); const folderData = useContext(FolderContex
Tôi đang gặp sự cố khi lấy hình ảnh từ S3 bằng URL được chỉ định trước và AFNetworking 3.0. Tôi có thể lấy hình ảnh bằng NSMutableURLRequest và NSURLSession, nhưng khi tôi sử dụng AFHT
Tôi đang gặp sự cố với trình quản lý Oracle UCP khi sử dụng Oracle ojdbc 12 và Java 8. Khi nhóm UCP không khởi động được, tôi muốn đóng các kết nối mà nó tạo ra. Khi ORA-02391: vượt quá
đóng cửa. Câu hỏi này cần có thông tin chi tiết hoặc rõ ràng. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện
Tham chiếu đến plunker này: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview Tôi đã chỉ định trong tệp styles.css và trong tệp src/app.ts
Tại sao thanh của tôi lại mỏng thế? Tôi đã thử đặt chiều rộng thành 1 và chúng trở nên thực sự dày. Tôi không biết phải thử cách nào khác nữa. Độ dày mặc định là 0,8, vậy có nên như vậy không? nhập matplotlib.pyplot dưới dạng plt nhập
Truy vấn thực thi như mong đợi khi tôi viết: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; Nhưng điều tôi thực sự muốn là một phép nối đúng. khi
Tôi có dữ liệu thời gian sau: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
Một số thông tin cơ bản - máy chủ NodeJS của tôi đang chạy trên cổng 3001 và ứng dụng React của tôi đang chạy trên cổng 3000. Tôi đã thiết lập một proxy trong ứng dụng React package.json của mình để proxy cho đối tác
Tôi đang gặp phải một vấn đề ngớ ngẩn. Tôi đang cố gắng tải chậm hình ảnh của mình vào ứng dụng Angular, tôi đã thử cách này 2: Nhưng cả hai đều đặt thuộc tính src thay vì data-src, tôi có bỏ sót điều gì ở đây không? Giữ d
Tôi là một lập trình viên xuất sắc, rất giỏi!