Di Game FPS saya, saya mencoba membuat pemain saya melempar granat. Saya tahu ada pertanyaan serupa seperti ini, tetapi postingannya sudah lama dan jawabannya tidak membantu saya sama sekali. Ketika saya mencoba melempar granat menggunakan metode AddForce(), granat tersebut hanya muncul tepat di depan pemain, seperti metode AddForce() tidak pernah dipanggil. Hal yang sama terjadi ketika saya mengatur kecepatannya ke suatu nilai. Sepertinya granatnya tidak bergerak sama sekali! Saya telah memastikan bahwa:
- Granat BUKAN Kinematik
- Itu tidak bekerja dengan gravitasi hidup dan mati
- Tidak ada Posisi/Rotasi yang dibekukan
- Ada tubuh kaku yang menempel
- Tidak ada pengontrol karakter yang terpasang pada granat
- Massanya hanya satu
Kode saya di bawah:
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 ();
}
}
}
Inspektur: