-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayerScript.cs
More file actions
135 lines (119 loc) · 3.27 KB
/
PlayerScript.cs
File metadata and controls
135 lines (119 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerScript : MonoBehaviour
{
private float health = 100;
private float velocity = 8;
public float jumpForce = 10;
public float dashForce = 10;
private float gravity = 5;
private float dir = 1;
private bool onGround = false;
private bool canDoubleJump = true;
private bool canDash = true;
private bool canInput = true;
private Rigidbody2D body;
private BoxCollider2D hitbox;
IEnumerator waitDash(float time)
{
yield return new WaitForSeconds(time);
canInput = true;
body.gravityScale = gravity;
body.velocity = Vector3.zero;
}
float getHealth()
{
return health;
}
void setHealth(float newHealth)
{
health = newHealth;
}
// Start is called before the first frame update
void Start()
{
body = this.GetComponent<Rigidbody2D>();
hitbox = this.GetComponent<BoxCollider2D>();
}
// Update is called once per frame
void FixedUpdate()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
if (canInput)
{
this.transform.position += new Vector3(horizontalInput * velocity * Time.deltaTime, 0, 0);
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
dir = 1;
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
dir = -1;
}
if (canInput)
{
if (Input.GetKeyDown(KeyCode.C))
{
if (onGround)
{
body.AddForce(Vector3.up * jumpForce, ForceMode2D.Impulse);
} else
{
if (canDoubleJump)
{
body.velocity = Vector3.zero;
body.AddForce(Vector3.up * (jumpForce * 0.8f), ForceMode2D.Impulse);
canDoubleJump = false;
}
}
}
if (Input.GetKeyDown(KeyCode.X))
{
if (canDash)
{
dash();
}
}
}
}
void OnCollisionEnter2D(Collision2D hit)
{
if (hit.gameObject.tag == "Boss_Fight_Floor")
{
onGround = true;
canDoubleJump = true;
canDash = true;
}
}
void OnCollisionExit2D(Collision2D hit)
{
if (hit.gameObject.tag == "Boss_Fight_Floor")
{
onGround = false;
}
}
void OnCollisionStay2D(Collision2D hit)
{
if (hit.gameObject.tag == "Boss_Fight_Floor")
{
onGround = true;
canDoubleJump = true;
canDash = true;
}
}
void dash()
{
body.gravityScale = 0;
body.velocity = Vector3.zero;
canInput = false;
body.AddForce(Vector3.left * dir * dashForce, ForceMode2D.Impulse);
StartCoroutine(waitDash(0.25f));
canDash = false;
}
}