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()