2022-03-12 15:56:25 +08:00
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.InputSystem;
|
2022-03-12 21:05:15 +08:00
|
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
|
using DG.Tweening;
|
2022-03-12 15:56:25 +08:00
|
|
|
|
|
|
|
|
|
public class Player : PlayerControl
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2022-03-12 21:05:15 +08:00
|
|
|
|
/// <20><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
2022-03-12 15:56:25 +08:00
|
|
|
|
Rigidbody2D m_rigidbody;
|
|
|
|
|
|
2022-03-12 21:05:15 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>ŵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Header("<22>ŵ<EFBFBD>λ<EFBFBD><CEBB>")] [FoldoutGroup("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|
|
|
|
public Transform GroundCheck;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1<CEAA><31>
|
|
|
|
|
/// </summary>
|
|
|
|
|
[ReadOnly] [Header("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|
|
|
|
public int isRight = 1;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ɫ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
[ReadOnly]
|
|
|
|
|
[Header("<22><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>")]
|
|
|
|
|
public bool isGround = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Header("<22><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>")][FoldoutGroup("<22><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|
|
|
|
public float speed;
|
|
|
|
|
|
|
|
|
|
[Header("<22><>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD>")][FoldoutGroup("<22><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")]
|
|
|
|
|
public float jumpForce;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Header("<22><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>")]
|
|
|
|
|
public float flipDuration = 0.1f;
|
|
|
|
|
|
|
|
|
|
|
2022-03-12 15:56:25 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>ҳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
override protected void Start()
|
|
|
|
|
{
|
|
|
|
|
base.Start();
|
|
|
|
|
m_rigidbody = gameObject.GetComponent<Rigidbody2D>();
|
2022-03-12 21:05:15 +08:00
|
|
|
|
|
2022-03-12 15:56:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
2022-03-12 21:05:15 +08:00
|
|
|
|
//UPDATE
|
2022-03-12 15:56:25 +08:00
|
|
|
|
void Update()
|
|
|
|
|
{
|
2022-03-12 21:05:15 +08:00
|
|
|
|
OnInputDetect();
|
|
|
|
|
Flip();
|
2022-03-12 15:56:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2022-03-12 21:05:15 +08:00
|
|
|
|
/// <20><><EFBFBD>溯<EFBFBD><E6BAAF>
|
2022-03-12 15:56:25 +08:00
|
|
|
|
/// </summary>
|
2022-03-12 21:05:15 +08:00
|
|
|
|
void Flip()
|
|
|
|
|
{
|
|
|
|
|
int lastFrameDir = isRight;
|
|
|
|
|
if (inputDir * lastFrameDir < 0)
|
|
|
|
|
{ isRight *= -1;
|
|
|
|
|
//transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
|
|
|
|
|
//transform.DOScale(new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z),0.1f);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ת <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>ʱ<EFBFBD>ٴη<D9B4>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD>ʼ<EFBFBD>ǶȲ<C7B6>ͬ<EFBFBD>Ӷ<EFBFBD>Ӱ<EFBFBD><D3B0>Ŀ<EFBFBD><C4BF><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
switch (isRight) {
|
|
|
|
|
case 1:
|
|
|
|
|
transform.DORotate(new Vector3(0, 0, 0), flipDuration);
|
|
|
|
|
break;
|
|
|
|
|
case -1:
|
|
|
|
|
transform.DORotate(new Vector3(0,180,0), flipDuration);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ֹͣҡ<D6B9><D2A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
void OnInputDetect() {
|
|
|
|
|
if (inputDir == 0)
|
|
|
|
|
Freeze();
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ǿ<>ƾ<EFBFBD>ֹ
|
|
|
|
|
/// </summary>
|
|
|
|
|
void Freeze() {
|
|
|
|
|
m_rigidbody.velocity = new Vector2(0,m_rigidbody.velocity.y);
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-12 15:56:25 +08:00
|
|
|
|
/// <param name="ctx"></param>
|
|
|
|
|
override protected void OnMove(InputAction.CallbackContext ctx)
|
|
|
|
|
{
|
2022-03-12 21:05:15 +08:00
|
|
|
|
base.OnMove(ctx);
|
|
|
|
|
m_rigidbody.velocity = new Vector2(inputDir*speed,m_rigidbody.velocity.y);
|
2022-03-12 15:56:25 +08:00
|
|
|
|
}
|
2022-03-13 23:27:31 +08:00
|
|
|
|
override protected void OnAtk() {
|
|
|
|
|
base.OnAtk();
|
2022-03-12 15:56:25 +08:00
|
|
|
|
}
|
|
|
|
|
override protected void OnJump() {
|
2022-03-13 23:27:31 +08:00
|
|
|
|
base.OnJump();
|
2022-03-12 21:05:15 +08:00
|
|
|
|
if (isGround == true) {
|
|
|
|
|
isGround = false;
|
|
|
|
|
m_rigidbody.velocity = new Vector2(m_rigidbody.velocity.x, jumpForce);
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-12 15:56:25 +08:00
|
|
|
|
}
|
|
|
|
|
override protected void OnInteract() {
|
2022-03-13 23:27:31 +08:00
|
|
|
|
base.OnInteract();
|
|
|
|
|
Leave.Instance.OnInteract();
|
2022-03-12 15:56:25 +08:00
|
|
|
|
}
|
2022-03-12 21:05:15 +08:00
|
|
|
|
|
|
|
|
|
private void OnCollisionEnter2D(Collision2D collision)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
if (collision.transform.CompareTag("Ground"))
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD>ŵ<C5B5><D7B7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
Ray2D ray = new Ray2D(
|
|
|
|
|
GroundCheck.position,
|
|
|
|
|
Vector2.down
|
|
|
|
|
);
|
|
|
|
|
Debug.DrawRay(ray.origin, ray.direction, Color.red, 10f);
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>
|
|
|
|
|
RaycastHit2D hit2D;
|
|
|
|
|
hit2D = Physics2D.Raycast(ray.origin, ray.direction, 0.001f);
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>,<2C>ű<EFBFBD>ʾ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>
|
|
|
|
|
if (hit2D && hit2D.collider.transform.CompareTag("Ground"))
|
|
|
|
|
{
|
|
|
|
|
isGround = true;
|
|
|
|
|
}
|
|
|
|
|
else Debug.Log("Not Ground");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|