【发布时间】:2016-01-21 03:14:47
【问题描述】:
我开始在 Unity3d 中制作一个简单的游戏:一辆坦克在墙上射击(见图)。
GameObject 连接到坦克的炮塔,GameObject 附加以下脚本:
using UnityEngine;
using System.Collections;
public class Shooter : MonoBehaviour {
public Rigidbody bullet;
public float power = 1500f;
void Update () {
if (Input.GetButtonDown ("Fire1")) {
Rigidbody bulletRB = Instantiate (bullet, transform.position, transform.rotation) as Rigidbody;
Vector3 fwd = transform.TransformDirection(Vector3.forward);
bulletRB.AddForce(fwd*power);
}
}
}
当我按下 Fire1 按钮时,子弹不会射出。我在bulletRB.addForce() 之后放置(用于测试)Debug.Log("BULLET SHOOT")。显示消息,因此脚本到达了这一点。我的代码有什么问题?
【问题讨论】:
-
首先,你看到场景层次结构中的子弹了吗?在项目符号上放置一个测试脚本,并在 Awake 中添加一个 Debug 以查看它是否真的被创建了。您可以在 OnDestroy 中放置另一个调试以查看它是否被破坏。您正在坦克位置制造子弹,也许它正在击中某些东西并在它离开现场之前自行摧毁。我建议在枪口末端放置一个游戏对象并将其连接到坦克上。您可以使用它的 transform.forward 作为子弹方向。
-
这里是因为我想看坦克射击墙壁
-
@fafase - 你的回答没问题。Tkx