В настоящее время я работаю над платформой для 2d tour в стиле simillar to Worms.Есть одна вещь, которую я хотел бы воссоздать в своей игре - это способ взаимодействия членов команды друг с другом.
Я ищу решение, чтобы заблокировать передачу скорости между персонажами.Допустим, один персонаж, который в данный момент находится под контролем игрока, движется к другому персонажу, находящемуся в состоянии ожидания.Когда эти персонажи сталкиваются, тот, который является контролируемым, не сможет двигаться дальше вперед.Но вместо этого, когда первый все еще движется, он начинает двигаться второй.
Так что я ищу решение, чтобы предотвратить ситуацию, когда скорость текущего контролируемого персонажа переходит к другим персонажам.
Ниже приведен скрипт PlayerController, отвечающий за перемещение символов:
private float MoveSpeed = 5f;
private float JumpSpeed = 15f;
private float MoveInput;
private Rigidbody2D rb;
public bool FacingRight = true;
public bool Grounded;
private bool Jump;
public Transform GroundCheck;
public Transform HealthTag;
public LayerMask Ground;
public Animator animator;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
if (Input.GetButtonDown("Jump") && Grounded == true)
{
Jump = true;
if (Jump == true)
{
rb.velocity = new Vector2(rb.velocity.x, JumpSpeed);
}
}
}
private void FixedUpdate()
{
Grounded = Physics2D.OverlapCircle(GroundCheck.position, 0.5f, Ground);
if(Grounded == false)
{
Jump = false;
}
MoveInput = Input.GetAxis("Horizontal");
animator.SetFloat("Speed", Mathf.Abs(MoveInput));
rb.velocity = new Vector2(MoveInput * MoveSpeed, rb.velocity.y);
if (MoveInput > 0 && FacingRight == false)
{
Flip();
}
else if (MoveInput < 0 && FacingRight == true)
{
Flip();
}
}
void Flip()
{
FacingRight = !FacingRight;
if (FacingRight == true)
{
transform.eulerAngles = new Vector3(0, 0, 0);
HealthTag.transform.eulerAngles = new Vector3(0, 0, 0);
}
if (FacingRight == false)
{
transform.eulerAngles = new Vector3(0, 180, 0);
HealthTag.transform.eulerAngles = new Vector3(0, 0, 0);
}
}