我试图用不同的敌人制作一个射击游戏,而我试图杀死一个有多个命中的老板,但我无法看到我是如何做到的。有人可以向我解释一下吗?
答案 0 :(得分:3)
问题在于你在projectileDidCollideWithBoss
内跟踪老板的健康状况,但每次调用该功能时你都会将老板的健康状况设置为10(这意味着它将获得的最低值是9)。您需要跟踪函数外部的monsterhp
,并在每次调用碰撞函数时减少它。您可以像Dan Karbaye所建议的那样,让老板成为具有健康属性的SKSpriteNode的子类。你也可以让monsterhp成为场景的属性,但如果你需要做很多事情,你的场景会开始变得凌乱,所以从长远来看,将SKSpriteNode子类化是一个更好的解决方案。
答案 1 :(得分:1)
<强>去除强>:
推荐的常用方法是:当您检测到应删除节点时(从冲突检测代码中)将其添加到删除列表中,并在<?php include('includes/config.php');
if(isset($_POST["submit"])){
$empid=$_POST["empid"];
$pass=$_POST["password"];
$query=mysqli_query($conn,"SELECT employee_id, fname,lname,empid,password,
status, role FROM employee where empid='$empid' and password='$pass'");
$row=mysqli_fetch_array($query);
if(is_array($row))
{
session_start();
$_SESSION["empid"]=$empid;
$_SESSION["role"]=$row["role"];
$_SESSION["eid"]=$row["empid"];
$_SESSION["status"]=$row['status'];
$_SESSION["employee_id"]=$row['employee_id'];
$_SESSION['uname']=$row['fname']." ".$row['lname'];
if($_SESSION["role"]=='admin' && $_SESSION["status"]>0){
$_SESSION['alogin']=$_POST['empid'];
header("Location:admin/home.php");
}
elseif($_SESSION["role"]=='TL' && $_SESSION["status"]>0){
$_SESSION['tlogin']=$_POST['empid'];
header("Location:TL/home.php");
}
else{
$_SESSION['emplogin']=$_POST['empid'];
header("Location:home.php");
}
}
else{
echo "<script>alert('Invalid login details');</script>" // this is not working
header("Location:index.php");
}
}
?>
或didFinishUpdate
中删除此列表中的每个对象。
数据管理: 现在,如果需要将某些数据附加到节点,请将其类型子类化并添加适当的属性和方法。
答案 2 :(得分:0)
更新我的回答我刚刚创建了一个代表老板生活的变量
var vieboss = 10
我还创建了一个设置杀死老板的功能
func bossdead(projectile: Projectile!,boss1 : Boss!) {
print("Hit boss")
projectile.physicsBody?.isDynamic = false
projectile.physicsBody?.categoryBitMask = 0
projectile.removeFromParent()
vieboss1 -= 1
if (vieboss1 == 0) {
monstersDestroyed += 10
boss1.physicsBody?.isDynamic = false
boss1.physicsBody?.categoryBitMask = 0
boss1.removeFromParent()
}
}
当射弹击中老板时调用函数bossdead