init
This commit is contained in:
commit
bd5b1556ff
269 changed files with 6249829 additions and 0 deletions
135
Assets/Scripts/PlayerController.cs
Normal file
135
Assets/Scripts/PlayerController.cs
Normal file
|
@ -0,0 +1,135 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerController : MonoBehaviour{
|
||||
|
||||
[HideInInspector]
|
||||
public Vector2 lastCheckpoint;
|
||||
|
||||
public SpriteRenderer[] deathDisable;
|
||||
|
||||
public float speed;
|
||||
public float airSpeed;
|
||||
[HideInInspector]
|
||||
public bool grappled;
|
||||
[HideInInspector]
|
||||
public bool ableToGrapple;
|
||||
|
||||
[Header("Jump")]
|
||||
public float jumpForce;
|
||||
public float groundDetectionRadius;
|
||||
public LayerMask whatIsGround;
|
||||
[Space(10)]
|
||||
public GameObject death;
|
||||
public Transform gun;
|
||||
public Transform firePos;
|
||||
LineRenderer line;
|
||||
|
||||
bool dead;
|
||||
bool moving;
|
||||
bool jump;
|
||||
bool isGrounded;
|
||||
Rigidbody2D rb2d;
|
||||
Shoot shoot;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start(){
|
||||
AudioManager.instance.Play("Theme");
|
||||
shoot = GetComponent<Shoot>();
|
||||
rb2d = GetComponent<Rigidbody2D>();
|
||||
line = GetComponent<LineRenderer>();
|
||||
lastCheckpoint = transform.position;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
if (!dead){
|
||||
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
|
||||
float rotZ = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
|
||||
gun.transform.rotation = Quaternion.Euler(0f, 0f, rotZ);
|
||||
|
||||
isGrounded = Physics2D.OverlapCircle(transform.position, groundDetectionRadius, whatIsGround);
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
|
||||
jump = true;
|
||||
}
|
||||
}
|
||||
|
||||
void LateUpdate(){
|
||||
line.SetPosition(0, firePos.position);
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected(){
|
||||
Gizmos.DrawWireSphere(transform.position, groundDetectionRadius);
|
||||
}
|
||||
|
||||
void FixedUpdate(){
|
||||
if (!dead){
|
||||
if (!moving && isGrounded){
|
||||
float fixedVelocity = rb2d.angularVelocity;
|
||||
fixedVelocity *= .98f;
|
||||
rb2d.angularVelocity = fixedVelocity;
|
||||
}
|
||||
|
||||
float h = Input.GetAxisRaw("Horizontal");
|
||||
if (h != 0){
|
||||
moving = true;
|
||||
}else{
|
||||
moving = false;
|
||||
}
|
||||
|
||||
if (isGrounded && !grappled){
|
||||
rb2d.AddForce(Vector2.right * speed * h);
|
||||
float limitedSpeed = Mathf.Clamp(rb2d.velocity.x, -speed, speed);
|
||||
rb2d.velocity = new Vector2(limitedSpeed, rb2d.velocity.y);
|
||||
}else if (!grappled){
|
||||
rb2d.AddForce(Vector2.right * airSpeed * h);
|
||||
float limitedSpeed = Mathf.Clamp(rb2d.velocity.x, -airSpeed, airSpeed);
|
||||
rb2d.velocity = new Vector2(limitedSpeed, rb2d.velocity.y);
|
||||
}
|
||||
|
||||
if (Input.GetMouseButton(0) && !ableToGrapple){
|
||||
shoot.Fire();
|
||||
}
|
||||
|
||||
if (jump){
|
||||
rb2d.velocity = new Vector2(rb2d.velocity.x, 0);
|
||||
rb2d.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
|
||||
jump = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnParticleCollision(GameObject col){
|
||||
Instantiate(death, transform.position, Quaternion.identity);
|
||||
Die();
|
||||
}
|
||||
void OnCollisionEnter2D(Collision2D col){
|
||||
if(col.gameObject.tag == "Death"){
|
||||
Instantiate(death, transform.position, Quaternion.identity);
|
||||
Die();
|
||||
}
|
||||
}
|
||||
|
||||
void Die(){
|
||||
foreach(SpriteRenderer s in deathDisable){
|
||||
s.enabled = false;
|
||||
}
|
||||
GetComponent<CapsuleCollider2D>().isTrigger = true;
|
||||
Invoke("Respawn", 2f);
|
||||
dead = true;
|
||||
rb2d.bodyType = RigidbodyType2D.Static;
|
||||
}
|
||||
|
||||
void Respawn(){
|
||||
transform.position = lastCheckpoint;
|
||||
foreach (SpriteRenderer s in deathDisable){
|
||||
s.enabled = true;
|
||||
}
|
||||
GetComponent<CapsuleCollider2D>().isTrigger = false;
|
||||
rb2d.bodyType = RigidbodyType2D.Dynamic;
|
||||
rb2d.velocity = Vector2.zero;
|
||||
dead = false;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue