[RequireComponent(typeof(combatPlaye))]
public class Player : MonoBehaviour
{
public Rigidbody2D rb;
public Vector2 moveVector;
public float speed = 3.5f;
public float jumpForce = 6f;
public Animator anim;
public SpriteRenderer sr;
public bool onGround;
public Transform GroundCheck;
public float checkRadius = 0.5f;
public LayerMask Ground;
public static Player Instance { get; set; }
[SerializeField] private int lives = 5;
привет, я сделал все также как и у вас но почему то ничего не вышло такая ошибка Assets\scripts\Player.cs(90,13): error CS0103: The name 'Stop' does not exist in the current context
K0TlK, да, у меня есть AttackPoint, а если вам не сложно вы бы могли поправить код чтобы урон давался туда куда персонаж смотрит, или кинуть ссылку где можно сделать.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
public class combatPlaye: MonoBehaviour
{
public Animator anim;
public Transform AttackPoint;
public float attackRange = 0.5f;
public LayerMask enemyLayers;
public Vector2 moveVector;
public int attackDamage = 40;
public float attackRate = 2f;
float nextAttackTime = 0f;
void Update()
{
if(Time.time >= nextAttackTime)
{
if (Input.GetKeyDown(KeyCode.F))
{
Attack();
nextAttackTime = Time.time + 1f / attackRate;
}
}
}
void Attack()
{
// АНІМАЦІЯ АТАКИ
anim.SetTrigger("Attack");
//АТАКА
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(AttackPoint.position, attackRange, enemyLayers);
//ХТО ПОЛУЧАЄ УРОН
foreach(Collider2D enemy in hitEnemies)
{
enemy.GetComponent().TakeDamage(attackDamage);
}
}
void OnDrawGizmosSelected()
{
if (AttackPoint == null)
return;
Gizmos.DrawWireSphere(AttackPoint.position, attackRange);
}
public void Stop()
{ //TRY WRITE this.enabled = true;
this.enabled = false;
}
}
второй скрипт -
[RequireComponent(typeof(combatPlaye))]
public class Player : MonoBehaviour
{
public Rigidbody2D rb;
public Vector2 moveVector;
public float speed = 3.5f;
public float jumpForce = 6f;
public Animator anim;
public SpriteRenderer sr;
public bool onGround;
public Transform GroundCheck;
public float checkRadius = 0.5f;
public LayerMask Ground;
public static Player Instance { get; set; }
[SerializeField] private int lives = 5;
void Start()
{
rb = GetComponent();
anim = GetComponent();
sr = GetComponent();
_combatPlaye = GetComponent();
Instance = this;
}
void Update()
{
Walk();
Jump();
Flip();
CheckingGround();
}
//ХОДЬБА
void Walk()
{
moveVector.x = Input.GetAxis("Horizontal");
anim.SetFloat("MoveX" , Mathf.Abs(moveVector.x));
rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y);
}
//ПРИЖОК
void Jump()
{
if(Input.GetKeyDown(KeyCode.Space) && onGround)
{
rb.velocity = new Vector2 (rb.velocity.x, jumpForce);
}
}
void Flip()
{
if(moveVector.x > 0)
{
sr.flipX = false;
}
else if (moveVector.x < 0)
{
sr.flipX = true;
}
}
void CheckingGround()
{
onGround = Physics2D.OverlapCircle(GroundCheck.position, checkRadius, Ground);
anim.SetBool("onGround", onGround);
}
public void GetDamage()
{
lives -=1;
Debug.Log(lives);
}
private combatPlaye _combatPlaye;
void Stoper()
{
if(moveVector.x > 0)
{
Stop();
}
}
}