- Home /
Question by
stevenether · Jan 27, 2021 at 10:07 PM ·
spritespriterenderer
I get an error if i try to use flipX : 'SpriteRenderer' does not contain a definition for 'flipX'
here is the code I found on https://dev.to/bounasrnour/simple-unity-2d-platformer-ai-1hp8 :
public class EnemyMovement : Enemys {
//variables
public int _moveSpeed;
public int _attackDamage;
public int _lifePoints;
public float _attackRadius;
public Transform playerTransfor;
//movement
public float _followRadius;
//end
[SerializeField] Transform playerTransform;
[SerializeField] Animator enemyAnim;
SpriteRenderer enemySR;
void Start()
{
//get the player transform
playerTransform = FindObjectOfType<Player>().GetComponent<Transform>();
//enemy animation and sprite renderer
enemyAnim = gameObject.GetComponent<Animator>();
enemySR = GetComponent<SpriteRenderer>();
//set the variables
setMoveSpeed(_moveSpeed);
setAttackDamage(_attackDamage);
setLifePoints(_lifePoints);
setAttackRadius(_attackRadius);
setFollowRadius(_followRadius);
}
// Update is called once per frame
void Update()
{
if (checkFollowRadius(playerTransform.position.x, transform.position.x))
{
//if player in front of the enemies
if (playerTransform.position.x < transform.position.x)
{
if (checkAttackRadius(playerTransform.position.x, transform.position.x))
{
//for attack animation
enemyAnim.SetBool("AttackA", true);
}
else
{
this.transform.position += new Vector3(-getMoveSpeed() * Time.deltaTime, 0f, 0f);
//for attack animation
enemyAnim.SetBool("AttackA", false);
//walk
enemyAnim.SetBool("Walking", true);
enemySR.flipX = true;
}
}
//if player is behind enemies
else if (playerTransform.position.x > transform.position.x)
{
if (checkAttackRadius(playerTransform.position.x, transform.position.x))
{
//for attack animation
enemyAnim.SetBool("AttackA", true);
}
else
{
this.transform.position += new Vector3(getMoveSpeed() * Time.deltaTime, 0f, 0f);
//for attack animation
enemyAnim.SetBool("AttackA", false);
//walk
enemyAnim.SetBool("Walking", true);
enemySR.flipX = false;
}
}
}
else
{
enemyAnim.SetBool("Walking", false);
}
}
}
Comment
Do you have any custom class in your project called SpriteRenderer
?
Could you try replacing
SpriteRenderer enemySR;
// ....
enemySR = GetComponent<SpriteRenderer>();
By
UnityEngine.SpriteRenderer enemySR;
// ....
enemySR = GetComponent<UnityEngine.SpriteRenderer>();
Answer by CmdrZin · Jan 27, 2021 at 11:46 PM
Check that enemySR = GetComponent<SpriteRenderer>();
is not 'null'.
flipX and flipY are properties of a SpriteRenderer.
https://docs.unity3d.com/ScriptReference/SpriteRenderer-flipX.html
Your answer
Follow this Question
Related Questions
How the change the sprite image of spritemask according to the sprite image in that object animator? 0 Answers
Sprite bad resolution [Mobile Game] 0 Answers
Change sprite in a sprite renderer with an animation 0 Answers
Force a SpriteRenderer to render at a position different from the actual transform's position 0 Answers