DoomPriestK
Active Coder
Hi guys, new user here!
Getting a response from the Unity community can sometimes be a bit slow so I decided to ask in other forums if someone can help
I'm new to unity and have been writing a 2D platformer
My code is using GetAxisRaw to determine if the player is crouching then uses a box collider script to move the characters collider box around, then toggles the public bool crouching (which I believe triggers the appropriate animation in the animator)
I need to apply the same thing but using a GetKey so I can assign a different duck button for each player, i've tried several ways to make it work but im just a novice and could use some help:
My Player Controller Script:
My Box Collider Script:
Any help would be appreciated, thanks!
Getting a response from the Unity community can sometimes be a bit slow so I decided to ask in other forums if someone can help
I'm new to unity and have been writing a 2D platformer
My code is using GetAxisRaw to determine if the player is crouching then uses a box collider script to move the characters collider box around, then toggles the public bool crouching (which I believe triggers the appropriate animation in the animator)
I need to apply the same thing but using a GetKey so I can assign a different duck button for each player, i've tried several ways to make it work but im just a novice and could use some help:
My Player Controller Script:
Code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed;
public float jumpForce;
public KeyCode left;
public KeyCode right;
public KeyCode jump;
public KeyCode throwNut;
private Rigidbody2D theRB;
public Transform groundCheckPoint;
public float groundCheckRadius;
public LayerMask whatIsGround;
public Transform CeilingCheck;
public bool isGrounded;
private bool isCrouched;
private float crouch;
public bool crouching;
private Animator anim;
public GameObject throwingNut;
public Transform ThrowPoint;
// Start is called before the first frame update
void Start()
{
theRB = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, whatIsGround);
isCrouched = Physics2D.OverlapCircle(CeilingCheck.position, groundCheckRadius, whatIsGround);
crouch = Input.GetAxisRaw("CrouchInput");
CrouchFunction();
GetComponent<Animator>().SetBool("Crouch", crouching);
if(Input.GetKey(throwNut))
{
GameObject nutClone = (GameObject)Instantiate(throwingNut, ThrowPoint.position, ThrowPoint.rotation);
nutClone.transform.localScale = transform.localScale;
anim.SetTrigger("Throw");
}
if (Input.GetKey(left))
{
theRB.velocity = new Vector2(-moveSpeed, theRB.velocity.y);
}
else if (Input.GetKey(right))
{
theRB.velocity = new Vector2(moveSpeed, theRB.velocity.y);
}
else
{
theRB.velocity = new Vector2(0, theRB.velocity.y);
}
if (Input.GetKeyDown(jump) && isGrounded)
{
theRB.velocity = new Vector2(theRB.velocity.x, jumpForce);
}
if (theRB.velocity.x < 0)
{
transform.localScale = new Vector3(-1, 1, 1);
}
else if(theRB.velocity.x > 0)
{
transform.localScale = new Vector3(1, 1, 1);
}
anim.SetFloat("Speed", Mathf.Abs(theRB.velocity.x));
anim.SetBool("Grounded", isGrounded);
}
void CrouchFunction()
{
if((crouch!=0 || isCrouched==true) && isGrounded == true)
{
crouching = true;
moveSpeed = 1.5f;
}
else
{
crouching = false;
moveSpeed = 6f;
}
}
}
My Box Collider Script:
Code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColliderControl : MonoBehaviour
{
public BoxCollider2D stand;
public BoxCollider2D crouch;
public CircleCollider2D circle;
PlayerController playerC;
// Start is called before the first frame update
void Start()
{
playerC = GetComponent<PlayerController>();
stand.enabled = true;
crouch.enabled = false;
circle.enabled = true;
}
// Update is called once per frame
void Update()
{
if(playerC.isGrounded == false)
{
stand.enabled = true;
crouch.enabled = false;
circle.enabled = true;
}
else
{
if(playerC.crouching == true)
{
stand.enabled = false;
crouch.enabled = true;
circle.enabled = true;
}
else
{
stand.enabled = true;
crouch.enabled = false;
circle.enabled = true;
}
}
}
}