내 Unity3D 게임에서 나는 주변을 날아 다니며 작은 부하를 낳는 UFO 적들을 가지고 있습니다. 나는 작은 부하보다 죽이는 것을 더 힘들게하고 싶었습니다. 그래서 그들의 주요 스크립트에서 몇 가지 건강 기능을 넣었습니다. 나는 이것을 플레이어가 UFO를 충분히 쏘면 UFO가 파괴 될 것입니다. (한번 쏘지 말고 멍청 아! 없어졌습니다.) 1 인칭 슈팅 게임이며 어떤 이유로 작동하지 않습니다. 더 오랜 시간 지속되면 게임이 중단되고 회색 화면이 표시됩니다. 일부 스크립트 포럼을 살펴본 결과 아직 답변을 찾지 못했습니다. 내가 어째서 왜 작동하지 않는지 확신 할 수 없기 때문에 변수를 어딘가에서 오용했을 수도있다. (C#과 자바 스크립트가 아닌)적의 생명력 감소 스크립트
var UFOspeed : float = 0.2f; //the speed of it's flight
var UFOmovement = true;
var UFOmovement2 = false;
var UFOhealth = 10; //this is the amount of health I added. I'm unsure if in JS you have to put .0f at the end of numbers unless if it's a float.
function Start()
{
UFOmove();
}
function Update() //this update just changes the direction of the movement of the UFO
{
if(UFOmovement == true && UFOmovement2 == false)
{
this.transform.position.x += UFOspeed;
}
if(UFOmovement == true && UFOmovement2 == true)
{
this.transform.position.z += UFOspeed;
}
if(UFOmovement == false && UFOmovement2 == true)
{
this.transform.position.x -= UFOspeed;
}
if(UFOmovement == false && UFOmovement2 == false)
{
this.transform.position.z -= UFOspeed;
}
}
function UFOmove() //UFO movement
{
for(i=1;i>0;i++)
{
yield WaitForSeconds(1);
UFOmovement2 = true;
yield WaitForSeconds(1);
UFOmovement = false;
yield WaitForSeconds(1);
UFOmovement2 = false;
yield WaitForSeconds(1);
UFOmovement = true;
}
}
//This is where I have the bullet collision
function OnCollisionEnter(collision : Collision) {
if (collision.gameObject.tag == "Bullet") //if the tagged object is Bullet
{
UFOhealth = UFOhealth - 1; //takes away from the health I put above
}
if (UFOhealth <=0)
{
Destroy(collision.gameObject, 3.0);
}
}
도움 주셔서 감사합니다.
네가 맞아! 나는 그것을 놓쳤다. JS에서는 Destroy (this.gameObject, 3.0);를 작성합니다. UFO를 파괴하라. 유감스럽게도 UFO는 1 타격 후에도 계속 삭제됩니다. 적어도 게임은 더 이상 충돌을 일으키지 않습니다. (어딘가 구문 오류 일 수 있습니다.)하지만이 비트를 직접 알아낼 수 있기를 바랍니다. 총알을 파괴하라는 제안은 정말 좋은 생각이었습니다! – user3037531