【发布时间】:2019-02-25 15:57:00
【问题描述】:
我很难理解 Unity 中的位置概念。
有一个父对象(玩家)。在那个播放器上,我有一个名为“Gun”的子对象。在枪上,我有一个发射子弹的脚本。当我发射子弹时,它会出现在枪的左侧和玩家的左侧。
我尝试在生成时偏移子弹的位置,但是当我转身时,位置不正确(它仍然不在枪的中心)。我也有一种感觉,我尝试过的偏移量是一种 hack,并且我在某个地方错过了一些东西。
我的枪射击脚本代码:
void Update()
{
if (Input.GetAxisRaw("Fire1") > 0)
{
var pos = transform.position;
print(pos.ToString());
var proj = Instantiate(projectile, pos, Quaternion.identity);
proj.transform.rotation = transform.rotation;
}
}
唯一与子弹接触的是我的 BulletController,子弹上的一个脚本:
void Start()
{
rb = GetComponent<Rigidbody2D>();
//rb.AddForce(transform.forward * 100, ForceMode.Impulse);
rb.velocity = transform.up * 10;
}
【问题讨论】:
-
你能打印出子弹在产生后以及运动更新时在框架上的位置吗?移动的第一帧可能发生偏移,或者您的子弹预制件未设置为 0, 0, 0
-
@Eliasar 不确定“在它生成后的帧上”是什么意思,但我所做的是在项目符号上添加一个脚本,在更新时打印出它的位置,那就是0,0,0