While I’ve been programming an RPG with the help of an tutorial. This error message appeared. I could not find the difference between my code and the code in the tutorial. could anybody help me out, this is my player Movement script(wich makes the player move):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public enum PlayerState{
walk,
attack,
interact,
stagger,
idle
}
public PlayerState currentState;
public float speed;
private Rigidbody2D myRigidbody;
private Vector3 change;
private Animator animator;
void Start()
{
currentState = PlayerState.walk;
animator = GetComponent<Animator>();
myRigidbody = GetComponent<Rigidbody2D>();
animator.SetFloat("moveX", 0);
animator.SetFloat("moveY", -1);
}
void FixedUpdate()
{
change = Vector3.zero;
change.Normalize();
change.x = Input.GetAxisRaw("Horizontal") * Time.deltaTime * speed;
change.y = Input.GetAxisRaw("Vertical") * Time.deltaTime * speed;
if (Input.GetButton("attack") && currentState != PlayerState.attack && currentState != PlayerState.stagger)
{
StartCoroutine(AttackCo());
}
else if (currentState == PlayerState.walk)
{
UpdateAnimationAndMove();
}
}
private IEnumerator AttackCo()
{
animator.SetBool("attacking", true);
currentState = PlayerState.attack;
yield return null;
animator.SetBool("attacking", false);
yield return new WaitForSeconds(.3f);
currentState = PlayerState.walk;
}
void UpdateAnimationAndMove()
{
if (change != Vector3.zero)
{
transform.Translate(new Vector3(change.x, change.y));
animator.SetFloat("moveX", change.x);
animator.SetFloat("moveY", change.y);
animator.SetBool("moving", true);
}
else
{
animator.SetBool("moving", false);
}
}
public void Knock(float knockTime)
{
StartCoroutine(knockCo(knockTime));
}
private IEnumerator knockCo(float knockTime)
{
if (myRigidbody != null)
{
yield return new WaitForSeconds(knockTime);
myRigidbody.velocity = Vector2.zero;
currentState = PlayerState.idle;
myRigidbody.velocity = Vector2.zero;
}
}
}
And this is the script wich causes the error(it was made for giving my player and my enemy a knock back effect):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Knockback : MonoBehaviour
{
public float thrust;
public float knockTime;
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("breakable"))
{
other.GetComponent<pot>().smash();
}
if (other.gameObject.CompareTag("enemy") || other.gameObject.CompareTag("Player"))
{
Rigidbody2D hit = other.GetComponent<Rigidbody2D>();
if (hit != null)
{
Vector2 difference = hit.transform.position - transform.position;
difference = difference.normalized * thrust;
hit.AddForce(difference, ForceMode2D.Impulse);
if (other.gameObject.CompareTag("enemy"))
{
hit.GetComponent<EnemyAI>().currentState = enemyState.stagger;
other.GetComponent<EnemyAI>().Knock(hit, knockTime);
}
if (other.gameObject.CompareTag("Player"))
{
hit.GetComponent<PlayerMovement>().currentState = PlayerState.stagger;
other.GetComponent<PlayerMovement>().Knock(knockTime);
}
}
}
}
}
the exact error message is: Assets/Scripts/Knockback.cs(32,71): error CS0103: The name ‘PlayerState’ does not exist in the current context.
7145498–854948–Knockback.cs (1.28 KB)
7145498–854951–PlayerMovement.cs (2.24 KB)