fgm24/Assets/Scripts/Player/Movement/PlayerMovement.cs

97 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using System.Linq;
using UnityEngine.InputSystem.DualShock;
[RequireComponent(typeof(PlayerInput))]
public class PlayerMovement : MonoBehaviour
{
public PlayerAnimationHandler animationHandler;
public float moveSpeed = 5f;
private Rigidbody2D rb;
private bool right = false;
[Header("Whipping")]
[SerializeField]
//RopeWhipAttack whipAttack;
public float whipSmashSpeed = 2f;
public float whipSmashDamageMult = 2f;
[SerializeField]
private float whipMoveSpeed = 25f;
[SerializeField]
private float maxWhipMoveSpeed = 30f;
private PlayerInput playerInput;
private HealthComponent hp;
private PlayerCollideAttack attack;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
playerInput = GetComponent<PlayerInput>();
hp = GetComponent<HealthComponent>();
attack = GetComponent<PlayerCollideAttack>();
if (gameObject.name == "Player2")
{
playerInput.useArrowKeys = true;
}
if (playerInput.controller != null)
{
var pad = (DualShockGamepad)Gamepad.all.ElementAtOrDefault(playerInput.PlayerNum);
if (pad == null) return;
if (playerInput.PlayerNum == 1)
pad.SetLightBarColor(Color.red);
}
}
private void Update()
{
if (playerInput.movement != Vector2.zero)
animationHandler.Run(true);
else
animationHandler.Run(false);
}
private void FixedUpdate()
{
//if (whipAttack.IsBeingWhipped)
//{
// //float sign = Vector2.Dot((whipAttack.joint.position - whipAttack.otherPlayerAttack.joint.position).normalized, movement.normalized);
// Vector2 ropeDir = whipAttack.otherPlayerAttack.joint.position - whipAttack.joint.position;
// Vector2 tangent = new Vector2(-ropeDir.y, ropeDir.x).normalized;
// rb.AddForce(Vector2.Dot(playerInput.movement, tangent) * tangent * whipMoveSpeed);
// rb.velocity = Vector2.ClampMagnitude(rb.velocity, maxWhipMoveSpeed);
//}
//else if (whipAttack.IsWhippingOtherPlayer)
//{
// playerInput.movement = Vector2.zero;
//}
//else
{
rb.AddForce(playerInput.movement * moveSpeed);
}
}
void OnCollisionStay2D(Collision2D collision)
{
if (collision.collider.gameObject.CompareTag("Enemy"))
{ // Other object is an enemy
hp.TakeDamage(1f);
}
}
}