Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何简化我的游戏敌人繁殖算法?(包括代码片段) 我在屏幕中间有一个英雄角色,我想把他周围的僵尸产卵成任意的位置,但离他有一定距离。代码>距离定义此距离_Javascript - Fatal编程技术网

Javascript 如何简化我的游戏敌人繁殖算法?(包括代码片段) 我在屏幕中间有一个英雄角色,我想把他周围的僵尸产卵成任意的位置,但离他有一定距离。代码>距离定义此距离

Javascript 如何简化我的游戏敌人繁殖算法?(包括代码片段) 我在屏幕中间有一个英雄角色,我想把他周围的僵尸产卵成任意的位置,但离他有一定距离。代码>距离定义此距离,javascript,Javascript,当它们产卵时,如果它们被推到屏幕的边界之外,这并不重要,它们都会向他走来。如果这种情况不发生,那也没关系,但似乎更容易 此时,僵尸的随机位置是通过random(screenWidth)和y轴random(screenHeight)为x轴创建的,这些值被输入到spawnLocation函数中,该函数根据它们与英雄的关系增加或减少以将它们移开 我的代码似乎太冗长了,尽管我已经非常努力地工作过了。我是否缺少一些明显的技巧来简化它 const state={ 选项:{ 僵尸数量:10, }, 人物:{

当它们产卵时,如果它们被推到屏幕的边界之外,这并不重要,它们都会向他走来。如果这种情况不发生,那也没关系,但似乎更容易

此时,僵尸的随机位置是通过
random(screenWidth)
和y轴
random(screenHeight)
为x轴创建的,这些值被输入到
spawnLocation
函数中,该函数根据它们与英雄的关系增加或减少以将它们移开

我的代码似乎太冗长了,尽管我已经非常努力地工作过了。我是否缺少一些明显的技巧来简化它

const state={
选项:{
僵尸数量:10,
},
人物:{
英雄:{
X职位:150,
位置:150,
},
},
};
常数屏幕宽度=400;
常数屏幕高度=400;
const random=range=>Math.floor(Math.random()*range);
函数createZombies(状态){
常数距离=10;
const spawnLocation=(zomPos、heroPos、axisLength)=>{
返回zomPos>heroPos
?zomPos+轴长度/距离
:zomPos-轴长度/距离;
};
for(让index=0;index创建僵尸(状态)生成随机角度和半径,然后将这些值转换为笛卡尔坐标

let theta = Math.random() * (2 * Math.PI)
let r = Math.random() * variationInR + minimumR

let zombieX = Math.cos(theta) * r + heroX
let zombieY = Math.sin(theta) * r + heroY

如果你想让它们成为整数,那么就让它们成为整数。这将从英雄至少
minimumR
单位外(毕达哥拉斯距离)均匀地放射状生成僵尸。如果你想保持曼哈顿距离行为,那么生成你的
dX
dY
并将它们添加到英雄的位置。

你也可以在这里尝试:似乎更合适我考虑过,但我想问一下如何改进这里的代码是相关的?这并不是主观的,如果我能用更少的字眼,更容易理解,那么每个人都应该分享这些知识。你更有可能得到答案……;)太棒了,谢谢!有一个小错误,应该是Math.random()