I have a Mayflash GameCube adapter.
How can I get it to work in unity to move my character around?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
private Rigidbody2D rb;
private SpriteRenderer sprite;
private Animator anim;
private Collider2D coll;
private bool doubleJump;
private bool wasGrounded;
private float dirX = 0f;
[SerializeField] private LayerMask jumpableGround;
[SerializeField] private float moveSpeed = 22f;
[SerializeField] private float jumpForce = 12f;
[SerializeField] private float doubleJumpingForce = 8f;
private enum MovementState {idle, running, jumping, falling}
private void Start()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponent<SpriteRenderer>();
coll = GetComponent <BoxCollider2D>();
anim = GetComponent<Animator>();
wasGrounded = false;
}
private void Update()
{
dirX = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(dirX * moveSpeed, rb.velocity.y);
if (wasGrounded && !IsGrounded())
{
doubleJump = true;
}
if (Input.GetButtonDown("Jump"))
{
if (IsGrounded() || doubleJump)
{
rb.velocity = new Vector2(rb.velocity.x, doubleJump ? doubleJumpingForce : jumpForce);
if (doubleJump)
{
doubleJump = false;
}
}
}
if (IsGrounded())
{
doubleJump = false;
}
wasGrounded = IsGrounded();
UpdateAnimationState();
}
private void UpdateAnimationState()
{
MovementState state;
if (dirX > 0f)
{
state = MovementState.running;
sprite.flipX = false;
}
else if (dirX < 0f)
{
state = MovementState.running;
sprite.flipX = true;
}
else
{
state = MovementState.idle;
}
if (rb.velocity.y > .1f)
{
state = MovementState.jumping;
}
else if (rb.velocity.y < -.1f)
{
state = MovementState.falling;
}
anim.SetInteger("state", (int)state);
}
bool IsGrounded()
{
return Physics2D.BoxCast(coll.bounds.center, coll.bounds.size, 0f, Vector2.down, .1f, jumpableGround);
}
}