我和我的朋友正在制作2D FPS游戏(不要问如何,复杂),但我们有一个简单的系统,他们是3个僵尸,每个都有不断变化的命中箱,取决于它们的距离/距离是,和健康。我们的问题是我们想要为此创造一个开放的世界(我们已经确切地知道如何再次提出要求,复杂化),并且我们不会为每个僵尸的健康,位置做出变量和大小(接近度),我们怎样才能在随机区域制作许多僵尸(在某个边界内随机)并且它们每个仍然都有命中框,健康状况等等?我们知道它可能在许多其他游戏中完成,但我们不知道如何使用,我们正在使用名为Processing.JS的JS框架。
修改
感谢@Kevin Workman为我提供了一些非常有用的代码,但仍然存在问题,他给每个僵尸的代码都有一个独特的X和Y但不是唯一的健康状况,我拿了他的代码并尝试将其修改为添加这个,但现在健康状况仍然停留在100.任何帮助?
ArrayList<Zombie> zombies = new ArrayList<Zombie>();
void setup(){
size(500, 500);
for(int i = 0; i < 100; i++){
zombies.add(new Zombie());
}
}
void draw(){
background(0);
for(Zombie z : zombies){
z.draw();
}
}
class Zombie{
float x = random(500);
float y = random(500);
float r = random(5, 20);
float h = 100;
void draw(){
fill(0, 255, 0);
if(h > 0) {
ellipse(x, y, r, r);
}
if(mouseX > x - r/2 && mouseX < x + r/2 && mouseY > y - r/2 && mouseY < y + r/2 && mousePressed) {
h --;
}
println(h);
}
}
答案 0 :(得分:3)
由于您正在使用Processing.js,因此您可以使用类来封装您需要跟踪每个僵尸所需的数据。 Here是使用类的Processing.js参考。一个简单的例子可能如下所示:
ArrayList<Zombie> zombies = new ArrayList<Zombie>();
void setup(){
size(500, 500);
for(int i = 0; i < 100; i++){
zombies.add(new Zombie());
}
}
void draw(){
background(0);
for(Zombie z : zombies){
z.draw();
}
}
class Zombie{
float x = random(500);
float y = random(500);
float r = random(5, 20);
void draw(){
fill(0, 255, 0);
ellipse(x, y, r, r);
}
}
答案 1 :(得分:0)
如果这是一个单人游戏(即没有网络/服务器),那么你可以简单地将健康(以及其他单个僵尸特定细节)存储在僵尸对象中。
这是一个简单的基于jQuery / DOM的示例(抱歉它没有处理.js,但我以前没有使用过它,只是想提供一个快速而基本的例子):
小提琴:https://jsfiddle.net/dg5p6c08/
$(function() {
// namespace
var ZOMBIEGAME = ZOMBIEGAME || {};
// zombie class
ZOMBIEGAME.zombie = function () {
this.health = 3;
this.x = 0;
this.y = 0;
this.dead = false;
this.takeDamage = function (damage) {
this.health -= damage;
if (this.health < 1) {
this.dead = true;
}
}
}
// make zombie objects
var zombies = [];
for (var i = 0; i < 10; i++) {
var z = new ZOMBIEGAME.zombie();
z.x = Math.floor(Math.random() * 480);
z.y = Math.floor(Math.random() * 480);
zombies.push(z);
}
// make DOM zombies
for (var i = 0; i < zombies.length; i++) {
var zDom = '<div class="zombie" data-id="' + i + '" style="top: '
+ zombies[i].y + 'px; left: ' + zombies[i].x + 'px;"></div>';
$('#game').append(zDom);
}
// click zombies
$('.zombie').on('click', function() {
var id = parseInt($(this).attr('data-id'));
zombies[id].takeDamage(1);
if (zombies[id].dead) {
$(this).css('background', '#bbb');
}
});
});
&#13;
body {
font-family: sans-serif;
}
#game {
width: 512px;
height: 512px;
position: relative;
background: #ddd;
}
.zombie {
width: 32px;
height: 32px;
background: #A1D490;
position: absolute;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Click zombies 3 times to kill.</p>
<div id="game"></div>
&#13;