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 EnemyMovement : MonoBehaviour {
- private Rigidbody2D rigbody; // 1) Rigidbody przeciwnika
- public float direction,speed; // 3) Deklaracja zmiennych prędkości i kierunku
- public LayerMask leftSide,rightSide; // 2) Stworzenie mask dla rightSide
- // Use this for initialization
- void Start ()
- {
- rigbody = GetComponent<Rigidbody2D>(); //1) Automatyczne pobranie rigidbody
- }
- // 5) Wykrywaj kolizję i zmieniaj kierunek
- void OnCollisionEnter2D(Collision2D other)
- {
- float otherLayer = Mathf.Pow(2,other.gameObject.layer); // sprawdź maskę tego na co spadliśmy
- direction = (transform.localScale.x > 0) ? 1 : -1; // jeżeli localScale jest większe od zera to patrzymy w prawo i ustaw direction na wartość dodatnią
- if(otherLayer == leftSide.value) Flip(true); // jeżeli dotykamy warstwy "LEWEJ" to nas odwróć bo patrzymy w prawo
- if(otherLayer == rightSide.value) Flip(false); // jeżeli dotykamy warstwy "PRAWEJ" to nas odwróc bo patrzymy w lewo
- }
- void FixedUpdate()
- {
- rigbody.velocity = new Vector2(speed*Time.deltaTime*direction, rigbody.velocity.y);
- }
- // 4) Stworzenie metody flip do obracania postaci
- private void Flip(bool facingRight)
- {
- if((facingRight == true && direction < 0f) || (facingRight == false && direction > 0f)) // Odwórć jeżeli patrzy w prawo, ale idzie w lewo lub odwrotnie
- {
- Vector3 theScale = transform.localScale;
- theScale.x *= -1;
- direction *= -1;
- transform.localScale = theScale;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement