【发布时间】:2019-07-16 21:20:55
【问题描述】:
我正在使用 Unity 尝试我的第一个测试游戏,并且努力让我的子弹移动。
我有一个名为“Bullet”的预制件,带有一个 RigidBody 组件,具有以下属性:
质量:1
阻力:0
角阻力:0,1
使用重力:0
是运动学的:0
插值:无
科尔。检测:离散
在子弹预制件上,我有这个脚本:
public float thrust = 10;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.AddForce(transform.forward * 100, ForceMode.Impulse);
}
在我的 playerController 脚本上(我知道这不是最好的地方):
if (Input.GetAxisRaw("Fire1") > 0)
{
var proj = Instantiate(projectile, transform.position, Quaternion.identity);
}
当我单击鼠标时,会创建子弹,但不会移动。我已经为刚体增加了速度,这很有效,但我无法让它朝着正确的方向移动。谷歌搜索后,似乎我需要使用rigidBody.AddForce(),我确实这样做了,但仍然无法让我的子弹移动。
我见过other 解决方案,但这对我也不起作用。
任何建议将不胜感激。
截图:
【问题讨论】:
-
你的组件上有刚体吗?
-
@Jlalonde,是的。有,根据我的问题开始设置属性。
-
你为什么使用
AddForce而不是简单的rb.velocity = transform.forward * 100;? -
啊,等一下,你是在 2D 中工作的,对吧?在这种情况下,
transform.forward将沿着向前/向后朝向屏幕的轴指向 - 即,它不会明显影响对象的位置。改用transform.right之类的东西。 -
实际上也......你会使用
RigidBody2D而不是......你也会注意到你不能添加Vector3力而只能添加vector2力