【发布时间】:2019-08-29 01:08:50
【问题描述】:
我正在尝试在 Unity 中创建一个脚本,当另一个对象触摸它时,它会抓住该对象,沿随机方向旋转它并启动它,但我只想在 z 轴上旋转并启动另一个对象.
这是我的脚本:
public BallController ballController;
private GameObject ball;
private Rigidbody2D ballRb;
void OnTriggerEnter2D(Collider2D other)
{
ball = other.gameObject;
ballRb = ball.GetComponent<Rigidbody2D>();
ball.transform.position = this.transform.position;
// Freeze the ball
ballRb.velocity = Vector2.zero;
// Rotate the ball
ball.transform.rotation = Quaternion.Euler(0, 0, Random.Range(0, 360));
// Start moving the ball again
ballRb.velocity = ballRb.velocity * ballController.bulletSpeed * Time.deltatime;
}
另一个脚本(球)有一个 Ridgidbody 并由另一个对象发射到这个脚本中,脚本让球按我想要的方式旋转,但它不会让球再次移动。
ballController 在编辑器中设置,bulletSpeed 只是我希望球移动的 int(当前设置为 6)。
【问题讨论】:
-
速度为零,这就是它不移动的原因。检查 bulletSpeed 和 deltatime 但我相信这是由于将速度设置为 Vector2.zero。要使对象在 z 方向上移动,向量的 x 和 y 分量必须为零,z 分量必须不为零。
-
我刚刚尝试禁用它,现在球移动了,但随机旋转停止工作,现在它抓住了球,不旋转它,然后再次将其发送出去。
-
@jdweng 我怀疑你想在 2D 游戏中向
z方向扔东西;)