저는 FPS 게임을하고 있습니다. deployed on Heroku here을 볼 수 있습니다 (로드하는 데 약 10 초가 걸리므로 기다려주십시오).짧은 지연으로 적을 어떻게 쏘게합니까?
플레이어는 똑같은 논리를 사용하고 있지만 제대로 쏠 수 있지만 적을 공격 할 수는 없습니다.
총알은 촬영 기능이 호출 된 직후에 포화 상태가됩니다. 플레이어가 총격을 가했을 때와 마찬가지로 적절한 적기에 총알을 쏴야합니다.
여기 내 코드입니다.
bulletTempEnemy = new J3D.Transform();
bulletTempEnemy.geometry = J3D.Primitive.Sphere(0.5, 4, 4);
bulletTempEnemy.renderer = J3D.BuiltinShaders.fetch("Normal2Color");
bulletHolderEnemy = new J3D.Transform();
engine.scene.add(bulletHolderEnemy);
function EnemyShooting(){
bulletHolderEnemy.position.x =swat2.position.x;
bulletHolderEnemy.position.y =swat2.position.y;
bulletHolderEnemy.position.z =swat2.position.z;
var b = bulletTempEnemy.clone();
var f =v3.sub(first_person_controller.position,swat2.position).norm();
b.direction = new v3();
b.direction=f;
b.position.fromArray(f);
b.progress = 0;
b.ttl = 50;
b.animate = function() {
b.position = b.direction.cp().mult(1 + b.progress);
b.progress += 1;
b.ttl--;
if(b.ttl == 0) {
bulletHolderEnemy.remove(b);
}
}
bulletHolderEnemy.add(b);
}
아래의 게임 루프 기능 draw()
에서 호출 된 코드 :
var zdis= Math.abs(Math.abs(Math.abs(swat2.position.z) - Math.abs(first_person_controller.position.z)));
var xdis= Math.abs(Math.abs(Math.abs(swat2.position.x) - Math.abs(first_person_controller.position.x)));
if(xdis < 80)
{
setInterval(EnemyShooting(), 90000);
}
for(var i = 0; i < bulletHolderEnemy.numChildren; i++) {
bulletHolderEnemy.childAt(i).animate();
}
나는 J3D library을 사용하고 있습니다.