团结,对角子弹
Unity, Diagonal Bullets
我目前正在使用不同的道具在 unity 2D 中创建一个游戏,其中一个可以让你进行散布射击,但我目前很难成为磨砂膏。我无法让它沿对角线移动。我的代码如下
public Rigidbody2D rb;
public float speed = 20f;
public float speed2 = 20f;
void Update()
{
rb.velocity = transform.up * speed;
rb.velocity = transform.right * speed2;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Alien"))
{
Destroy(gameObject);
}
}
在你说什么之前,我知道主要问题是两次给 rb.velocity 赋值,我已经尝试了很多变通方法但没有任何效果。
我想保留当前的简单编码风格,但如果有必要,我会更改它。
提前致谢。
你是对的,问题是你设置了两次速度,所以第二个分配只是覆盖了第一个。
要解决此问题,只需在分配给速度之前将两个向量相加即可:
rb.velocity = (transform.up * speed) + (transform.right * speed2);
或者由于您使用相同的速度值,您可以在缩放之前简单地添加两个向量:
rb.velocity = (transform.up + transform.right) * speed;
我目前正在使用不同的道具在 unity 2D 中创建一个游戏,其中一个可以让你进行散布射击,但我目前很难成为磨砂膏。我无法让它沿对角线移动。我的代码如下
public Rigidbody2D rb;
public float speed = 20f;
public float speed2 = 20f;
void Update()
{
rb.velocity = transform.up * speed;
rb.velocity = transform.right * speed2;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Alien"))
{
Destroy(gameObject);
}
}
在你说什么之前,我知道主要问题是两次给 rb.velocity 赋值,我已经尝试了很多变通方法但没有任何效果。 我想保留当前的简单编码风格,但如果有必要,我会更改它。 提前致谢。
你是对的,问题是你设置了两次速度,所以第二个分配只是覆盖了第一个。
要解决此问题,只需在分配给速度之前将两个向量相加即可:
rb.velocity = (transform.up * speed) + (transform.right * speed2);
或者由于您使用相同的速度值,您可以在缩放之前简单地添加两个向量:
rb.velocity = (transform.up + transform.right) * speed;