- Home /
Question by
c2egroeg · Apr 30, 2018 at 03:58 AM ·
2d-platformersprite rendererflipping
Hi, just a small question. Why isn't my enemy flipping? I know I'm doing this right because my player if flipping, but what about my enemy. I'm getting really frustrated here.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class EnemyScript : MonoBehaviour {
public float delta = 1.5f;
public float speed = 2.0f;
private Vector2 startPos;
public GameObject pelletPrefab;
public GameObject negPelletPrefab;
public float rayDist;
public float fireRate = 0.5f;
private float nextFire = 0.0f;
public int enemyHealth;
public bool facingRight;
public SpriteRenderer enemySprite;
// Use this for initialization
void Start () {
startPos = transform.position;
}
// Update is called once per frame
void Update () {
Vector2 rayStartRight = transform.position + new Vector3 (0.5f, 0, 0);
Vector2 rayStartLeft = transform.position + new Vector3 (-0.5f, 0, 0);
Vector3 v = startPos;
v.x += delta * Mathf.Sin (Time.time * speed);
transform.position = v;
if (v.x > 0 && !facingRight) {
enemySprite.flipX = false;
} else if (v.x < 0 && facingRight) {
enemySprite.flipX = true;
} else {
enemySprite.flipX = false;
}
Vector2 rayDirRight = new Vector2 (1, 0);
Vector2 rayDirLeft = new Vector2 (-1, 0);
Debug.DrawRay (rayStartRight, rayDist * rayDirRight, Color.red);
Debug.DrawRay (rayStartLeft, rayDist * rayDirLeft, Color.blue);
RaycastHit2D hitRight = Physics2D.Raycast (rayStartRight, rayDirRight, rayDist);
RaycastHit2D hitLeft = Physics2D.Raycast (rayStartLeft, rayDirLeft, rayDist);
/*Physics2D.Raycast (rayStart, rayDirRight, out hitRight, rayDist);
Physics2D.Raycast (rayStart, rayDirLeft, out hitLeft, rayDist);*/
if (hitRight.collider != null) {
if (hitRight.collider.tag == "Player") {
if (Time.time >= nextFire) {
Instantiate (pelletPrefab, transform.position, Quaternion.identity);
nextFire = Time.time + fireRate;
}
}
//Debug.Log (hitRight.collider.gameObject);
}
if (hitLeft.collider != null) {
if (hitLeft.collider.tag == "Player") {
if (Time.time >= nextFire) {
Instantiate (negPelletPrefab, transform.position + new Vector3(-0.8f,0,0), Quaternion.identity);
nextFire = Time.time + fireRate;
}
}
}
}
void OnCollisionEnter2D (Collision2D other){
if (other.gameObject.tag == "PlayerBullet") {
enemyHealth--;
Destroy (other.gameObject);
Debug.Log ("I hit");
if (enemyHealth <= 0) {
Destroy (gameObject);
}
} /*else {
enemyHealth--;
}*/
Debug.Log ("I hit");
}
}
Comment
Your answer
Follow this Question
Related Questions
(2D sidescrolling platformer) Flipping my character right or left depending on the mouse? 2 Answers
Player Flipping and Shot/Tilemap bugs 0 Answers
How to monitor the movment speed of a 2D sprite 0 Answers
C# 2D platformer: How to have player always face center? 0 Answers
If statement not working 2 Answers