ThaiGameDevX - Thai Game Developers eXchange Forums
26 September 2017, 04:12:35 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: หากมาครั้งแรก เชิญอ่าน ประกาศเจตนารมณ์ของ ThaiGameDevX และ กติกา ข้อตกลงในการใช้เว็บบอร์ด ครับ
 
   Home   Help Search Calendar Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: บัค กระสุนครับบบ วาจา ของ Unity ดูให้หน่อยครับ  (Read 3731 times)
0 Members and 1 Guest are viewing this topic.
zxmcq
Approved Member
Newbie
*

จำนวน ชม/ไม่พอใจ: +0/-11
Offline Offline

Posts: 13


« on: 27 September 2012, 04:31:00 AM »

ปัญหาคือ ว่า กดยิงแล้ว กระสุนไม่ลด 30 นัดเหมือนเดิม แต่ว่ายิงกระสุนออก  พอผ่านไปสักพัก กระสุนลด แล้ว มันไม่ได้ลดทีล่ะ 1 นัด มันลดที ล่ะ 4 นัด 2นัด 3นัด  มีวิธีแก้บัคไหมครับ

อันนี้โค้ดข้างล่าง ผมเอาไปใส่ ออบเจ็ตปืน


var Bullet : Rigidbody;
var Spawn : Transform;
var BulletSpeed : float = 1000;
var AmmoFull : float = 30;
static var AmmoLeft : float;
var ReloadTime : float = 2;
var FullAuto = true;
var FireRate = 0.5;
private var CanFire = true;

function Start() {
 AmmoLeft = AmmoFull;
}


function Update (){
   if(FullAuto == false){
    if(Input.GetButtonDown("Fire1")){
     if(AmmoLeft > 0){
      BroadcastMessage("FireAni");
      Fire();
     }
    }
   }
   else { 
    if(Input.GetButton("Fire1")){
     if(AmmoLeft > 0){
      BroadcastMessage("FireAni");
      Fire();
     }
    }
   }
  if(Input.GetKeyDown("r")){
   Reload();
  }
  if(AmmoLeft == 0){
   Reload();
  }
  if(AmmoLeft < 0){
   AmmoLeft = 0;
  }
}



function Fire()
{
 if(CanFire == true ){
  var bulletl : Rigidbody = Instantiate(Bullet,Spawn.position,Spawn.rotation);
  bulletl.AddForce(transform.forward *BulletSpeed);
  CanFire = false;
  yield WaitForSeconds(FireRate);
  CanFire = true;
  AmmoLeft -= 1;
  audio.Play();
 }
}



function Reload()
{
 CanFire = false;
 BroadcastMessage("ReloadAni");
 yield WaitForSeconds(ReloadTime);
 AmmoLeft=AmmoFull;
 CanFire = true;
}
Logged
SamNainocard
Approved Member
Newbie
*

จำนวน ชม/ไม่พอใจ: +2/-0
Offline Offline

Posts: 12


« Reply #1 on: 02 October 2012, 08:01:00 AM »

ไม่ได้ใช้ Unity นะ แต่จากที่ดูเอา
Code:
AmmoLeft -= 1;

ไปไว้นอก

Code:
if(CanFire == true )

หรือบน
Code:
yield WaitForSeconds(FireRate);
ถ้าจะให้ลดตอนสร้างกระสูนจริงๆ
« Last Edit: 02 October 2012, 08:05:55 AM by SamNainocard » Logged

Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!