ในเกม FPS ของฉัน ฉันกำลังพยายามทำให้ผู้เล่นขว้างระเบิดมือ ฉันรู้ว่ามีคำถามที่คล้ายกันเช่นนี้ แต่โพสต์เก่าและคำตอบไม่ได้ช่วยฉันเลย เมื่อฉันพยายามขว้างระเบิดมือโดยใช้วิธี AddForce() ระเบิดมือนั้นเพิ่งจะเกิดตรงหน้าผู้เล่น เหมือนกับที่ไม่เคยเรียกวิธี AddForce() เลย สิ่งเดียวกันนี้เกิดขึ้นเมื่อฉันตั้งค่าความเร็วเป็นค่า ดูเหมือนว่าระเบิดจะไม่ขยับเลย! ฉันได้ทำให้แน่ใจว่า:
- ระเบิดมือไม่ใช่จลนศาสตร์
- มันไม่ทำงานทั้งเปิดและปิดแรงโน้มถ่วง
- ไม่มีการหยุดตำแหน่ง/การหมุน
- มีร่างกายที่แข็งกระด้างติดอยู่
- ไม่มีตัวควบคุมอักขระติดอยู่กับระเบิดมือ
- มวลมีเพียงหนึ่งเดียว
รหัสของฉันอยู่ด้านล่าง:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Script : MonoBehaviour {
[SerializeField] GameObject grenade;
public int throwForce = 30;
Vector3 spawnPosition;
// Use this for initialization
void Start () {
instantiateVariables ();
}
void instantiateVariables(){
}
void throwGrenade(){
print (spawnPosition);
GameObject tempGrenade = (GameObject) Instantiate (grenade, spawnPosition, transform.rotation);
Vector3 direction = new Vector3(transform.forward.x, transform.forward.y, transform.forward.z );
Rigidbody rb = grenade.GetComponent<Rigidbody> ();
if (rb != null){
rb.velocity = direction.normalized * 10f;
Destroy (tempGrenade, 10);
}
else {
Debug.LogError ("There is no rigid body on your cube!");
}
}
// Update is called once per frame
void Update () {
spawnPosition = transform.forward + transform.position;
print (spawnPosition);
if (Input.GetMouseButtonDown (1)) {
throwGrenade ();
}
}
}
สารวัตร: