Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class SkeletonController : MonoBehaviour
- {
- [SerializeField] private int hp;
- [SerializeField] private int damage;
- [SerializeField] private GameObject player;
- [SerializeField] private float speed;
- [SerializeField] private Transform rayPosition;
- [SerializeField] private float EndAttack;
- [SerializeField] private Sprite DeathSprite;
- [SerializeField] private float DistanceToPlayer;
- private SpriteRenderer spriteRenderer;
- private float StartPos;
- private float EndPos;
- private Animator animator;
- private Rigidbody2D rb2d;
- private float StartAttack;
- private float DistanceAttackPlayer = 2f;
- private bool isDeath = false;
- private bool isAttack = false;
- private int DeathCount = 0;
- private new BoxCollider2D collider2D;
- void Start()
- {
- rb2d = GetComponent<Rigidbody2D>();
- animator = GetComponent<Animator>();
- spriteRenderer = GetComponent<SpriteRenderer>();
- collider2D = GetComponent<BoxCollider2D>();
- StartPos = transform.position.x;
- EndPos = transform.position.x;
- }
- void Update()
- {
- if(hp <= 0){
- if(isDeath == false){
- if(DeathCount == 0){
- animator.SetInteger("state",4);
- DeathCount++;
- }
- }
- }
- else{
- RaycastHit2D hit = Physics2D.Raycast(rayPosition.position,Vector2.right,2f);
- if(PlayerController.isDeath == false){
- if(Vector3.Distance(transform.position, player.transform.position) > DistanceToPlayer){
- animator.SetInteger("state",1);
- }
- else{
- if(isAttack == false){
- animator.SetInteger("state",2);
- Vector2 vector2Saw = new Vector2(player.transform.position.x, transform.position.y);
- if(Vector3.Distance(transform.position, player.transform.position) > DistanceAttackPlayer){
- transform.position = Vector3.MoveTowards(transform.position, vector2Saw, speed * Time.deltaTime);
- }
- StartPos = transform.position.x;
- if (StartPos < EndPos) {
- animator.SetInteger("state",5);
- hit = Physics2D.Raycast(rayPosition.position,Vector2.right,2f);
- rayPosition.localRotation = Quaternion.Euler(0,0,0);
- Debug.DrawRay(rayPosition.position,Vector3.right,Color.green,1.5f);
- EndPos = StartPos;
- }
- else{
- animator.SetInteger("state",2);
- rayPosition.localRotation = Quaternion.Euler(0,180f,0);
- hit = Physics2D.Raycast(rayPosition.position,Vector2.left,2f);
- Debug.DrawRay(rayPosition.position,Vector3.left,Color.green,1.5f);
- EndPos = StartPos;
- }
- }
- if(Vector3.Distance(transform.position, player.transform.position) <= DistanceAttackPlayer && PlayerController.isDeath == false){
- isAttack = true;
- if(StartAttack <= 0){
- if (transform.position.x > player.transform.position.x) {
- transform.rotation = Quaternion.Euler(0,180f,0);
- hit = Physics2D.Raycast(rayPosition.position,Vector2.left,2f);
- Debug.DrawRay(rayPosition.position,Vector3.left,Color.green,1.5f);
- }
- else{
- transform.rotation = Quaternion.Euler(0,0,0);
- hit = Physics2D.Raycast(rayPosition.position,Vector2.right,2f);
- rayPosition.localRotation = Quaternion.Euler(0,180f,0);
- rayPosition.localRotation = Quaternion.Euler(0,0,0);
- Debug.DrawRay(rayPosition.position,Vector3.right,Color.green,1.5f);
- }
- animator.SetInteger("state",3);
- hit.collider.GetComponent<PlayerController>().takeDamage(damage);
- StartAttack = EndAttack;
- Debug.Log(hit.collider.tag);
- }
- else{
- if(AnimationIsPlaying("Attack") == true){
- animator.SetInteger("state",1);
- }
- StartAttack -= Time.deltaTime;
- }
- }
- else{
- isAttack = false;
- }
- }
- }
- else{
- animator.SetInteger("state",1);
- }
- }
- Debug.DrawRay(transform.position,Vector3.right,Color.green,1.5f);
- }
- public void takeDamage(int damage){
- hp -= damage;
- }
- public bool AnimationIsPlaying(string animationName){
- var animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
- if(animatorStateInfo.IsName(animationName)){
- return true;
- }
- return false;
- }
- public void Death(){
- animator.enabled = false;
- spriteRenderer.sprite = DeathSprite;
- rb2d.gravityScale = 0;
- collider2D.isTrigger = true;
- spriteRenderer.sortingOrder = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement