麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

Easy Check Fps hit

2019-11-14 11:53:34
字體:
來源:轉載
供稿:網友

通過簡單的直線相交,判定玩家是否射擊打中了敵人,在類似的射擊游戲的碰撞檢測中沒有必要用到物理引擎,就可以通過這種方式判斷是否擊中的隊友。

以下代碼來源 smart fox server Fps Demo

// Checking if the player hits enemy using simple line intersection and // the known players position and rotation angles PRivate boolean checkHit(CombatPlayer player, CombatPlayer enemy) { if (enemy.isDead()) { return false; } // First of all checking the line intersection with enemy in top projection double radius = enemy.getCollider().getRadius(); double height = enemy.getCollider().getHeight(); double myAngle = player.getTransform().getRoty(); double vertAngle = player.getTransform().getRotx(); // Calculating an angle relatively to X axis anti-clockwise double normalAngle = normAngle(360 + 90 - myAngle); //Calculating the angle of the line between player and enemy center point double difx = enemy.getX() - player.getX(); double difz = enemy.getZ() - player.getZ(); double ang = 0; if (difx == 0) { ang = 90; } else { ang = Math.toDegrees(Math.atan(Math.abs(difz / difx))); } // Modifying angle depending on the quarter if (difx <= 0) { if (difz <= 0) { ang += 180; } else { ang = 180 - ang; } } else { if (difz <= 0) { ang = 360 - ang; } } ang = normAngle(ang); // Calculating min angle to hit double angDif = Math.abs(ang - normalAngle); double d = Math.sqrt(difx * difx + difz * difz); double maxDif = Math.toDegrees(Math.atan(radius / d)); if (angDif > maxDif) { return false; } // Now calculating the shot in the side projection // Correction value to fit the model visually (as the collider may not totally fit the model height on client) final double heightCorrection = 0.3; if (vertAngle > 90) { vertAngle = 360 - vertAngle; } else { vertAngle = -vertAngle; } double h = d * Math.tan(Math.toRadians(vertAngle)); double dif = enemy.getTransform().getY() - player.getTransform().getY() - h + heightCorrection; if (dif < 0 || dif > height) { return false; } return true; } private double normAngle(double a) { if (a >= 360) { return a - 360; } return a; }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产一级毛片国语版 | 激情小说色 | 黄色免费高清网站 | 中文字幕h | av免费在线观看免费 | 国产精品久久久久久久久久久久午夜 | 国产精品久久久久久模特 | av中文字幕免费在线观看 | 在线观看国产一区二区 | 亚洲成人精品国产 | 欧美在线成人影院 | 久久69精品久久久久久国产越南 | 青草av.久久免费一区 | 韩国一大片a毛片 | 久久久久久久免费精品 | 九一免费在线观看 | 一级看片免费视频 | 午夜精品一区二区三区免费 | 成年毛片| 成人在线免费观看网址 | 国产免费久久久久 | 免费观看国产精品视频 | 操碰视频在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | 天天艹综合 | 成人免费在线观看视频 | 综合图区亚洲 | 欧美黑人伦理 | 国产精品久久久久久久久岛 | 欧美www| 免费色片 | 色a综合| 午夜视| 午夜精品小视频 | 日韩激情| 欧美视频一级 | 蜜桃一本色道久久综合亚洲精品冫 | 欧美五月婷婷 | 中国av中文字幕 | 欧美一级性 | 中文字幕一区在线观看视频 |