COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
2 participantes
Página 1 de 1
COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
Bom dia galera, eu peguei esse script em um canal do youtube e ele ensina esse metado de ataque, como eu troco a forma de ataque?
Queria que em vez de ser click na tela com o mouse fosse um botãoUI no canto da tela.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(Player))]
public class PlayerController : MonoBehaviour
{
[HideInInspector] public Player player;
public Animator playerAnimator;
float input_x = 0;
float input_y = 0;
bool isWalking = false;
Rigidbody2D rb2D;
Vector2 movement = Vector2.zero;
[Header("Interact")]
public KeyCode interactKey = KeyCode.E;
bool canTeleport = false;
Region tmpRegion;
// Start is called before the first frame update
void Start()
{
isWalking = false;
rb2D = GetComponent<Rigidbody2D>();
player = GetComponent<Player>();
}
// Update is called once per frame
void Update()
{
input_x = Input.GetAxisRaw("Horizontal");
input_y = Input.GetAxisRaw("Vertical");
isWalking = (input_x != 0 || input_y != 0);
movement = new Vector2(input_x, input_y);
if (isWalking)
{
playerAnimator.SetFloat("input_x", input_x);
playerAnimator.SetFloat("input_y", input_y);
}
playerAnimator.SetBool("isWalking", isWalking);
if (player.entity.attackTimer < 0)
player.entity.attackTimer = 0;
else
player.entity.attackTimer -= Time.deltaTime;
if (player.entity.attackTimer == 0 && !isWalking)
{
if (Input.GetButtonDown("Fire1"))
{
playerAnimator.SetTrigger("attack");
player.entity.attackTimer = player.entity.cooldown;
Attack();
}
}
if (canTeleport && tmpRegion != null && Input.GetKeyDown(interactKey))
{
this.transform.position = tmpRegion.warpLocation.position;
}
}
private void FixedUpdate()
{
rb2D.MovePosition(rb2D.position + movement * player.entity.speed * Time.fixedDeltaTime);
}
private void OnTriggerEnter2D(Collider2D collider)
{
if (collider.tag == "Enemy")
{
player.entity.target = collider.transform.gameObject;
}
if (collider.tag == "Teleport")
{
tmpRegion = collider.GetComponent<Teleport>().region;
canTeleport = true;
}
}
private void OnTriggerExit2D(Collider2D collider)
{
if (collider.tag == "Enemy")
{
player.entity.target = null;
}
if (collider.tag == "Teleport")
{
tmpRegion = null;
canTeleport = false;
}
}
void Attack()
{
if (player.entity.target == null)
return;
Monster monster = player.entity.target.GetComponent<Monster>();
if (monster.entity.dead)
{
player.entity.target = null;
return;
}
float distance = Vector2.Distance(transform.position, player.entity.target.transform.position);
if (distance <= player.entity.attackDistance)
{
int dmg = player.manager.CalculateDamage(player.entity, player.entity.damage);
int enemyDef = player.manager.CalculateDefense(monster.entity, monster.entity.defense);
int result = dmg - enemyDef;
if (result < 0)
result = 0;
Debug.Log("Player dmg: " + result.ToString());
monster.entity.currentHealth -= result;
monster.entity.target = this.gameObject;
}
}
}
Queria que em vez de ser click na tela com o mouse fosse um botãoUI no canto da tela.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(Player))]
public class PlayerController : MonoBehaviour
{
[HideInInspector] public Player player;
public Animator playerAnimator;
float input_x = 0;
float input_y = 0;
bool isWalking = false;
Rigidbody2D rb2D;
Vector2 movement = Vector2.zero;
[Header("Interact")]
public KeyCode interactKey = KeyCode.E;
bool canTeleport = false;
Region tmpRegion;
// Start is called before the first frame update
void Start()
{
isWalking = false;
rb2D = GetComponent<Rigidbody2D>();
player = GetComponent<Player>();
}
// Update is called once per frame
void Update()
{
input_x = Input.GetAxisRaw("Horizontal");
input_y = Input.GetAxisRaw("Vertical");
isWalking = (input_x != 0 || input_y != 0);
movement = new Vector2(input_x, input_y);
if (isWalking)
{
playerAnimator.SetFloat("input_x", input_x);
playerAnimator.SetFloat("input_y", input_y);
}
playerAnimator.SetBool("isWalking", isWalking);
if (player.entity.attackTimer < 0)
player.entity.attackTimer = 0;
else
player.entity.attackTimer -= Time.deltaTime;
if (player.entity.attackTimer == 0 && !isWalking)
{
if (Input.GetButtonDown("Fire1"))
{
playerAnimator.SetTrigger("attack");
player.entity.attackTimer = player.entity.cooldown;
Attack();
}
}
if (canTeleport && tmpRegion != null && Input.GetKeyDown(interactKey))
{
this.transform.position = tmpRegion.warpLocation.position;
}
}
private void FixedUpdate()
{
rb2D.MovePosition(rb2D.position + movement * player.entity.speed * Time.fixedDeltaTime);
}
private void OnTriggerEnter2D(Collider2D collider)
{
if (collider.tag == "Enemy")
{
player.entity.target = collider.transform.gameObject;
}
if (collider.tag == "Teleport")
{
tmpRegion = collider.GetComponent<Teleport>().region;
canTeleport = true;
}
}
private void OnTriggerExit2D(Collider2D collider)
{
if (collider.tag == "Enemy")
{
player.entity.target = null;
}
if (collider.tag == "Teleport")
{
tmpRegion = null;
canTeleport = false;
}
}
void Attack()
{
if (player.entity.target == null)
return;
Monster monster = player.entity.target.GetComponent<Monster>();
if (monster.entity.dead)
{
player.entity.target = null;
return;
}
float distance = Vector2.Distance(transform.position, player.entity.target.transform.position);
if (distance <= player.entity.attackDistance)
{
int dmg = player.manager.CalculateDamage(player.entity, player.entity.damage);
int enemyDef = player.manager.CalculateDefense(monster.entity, monster.entity.defense);
int result = dmg - enemyDef;
if (result < 0)
result = 0;
Debug.Log("Player dmg: " + result.ToString());
monster.entity.currentHealth -= result;
monster.entity.target = this.gameObject;
}
}
}
verme1311- Avançado
- PONTOS : 2291
REPUTAÇÃO : 16
Respeito as regras :
Re: COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
E bem simples, você vai criar um botão, colocar o GameObject que esta com a script responsável, e configurar qual função ele vai chamar.
https://prnt.sc/1ywliav
https://prnt.sc/1ywliav
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
Tentei alguns jeitos mas, não funciona o ataque sai, mas quando eu abro o inventario por exemplo e clico em algum lugar ele ainda ativa o ataque, por que esta configura pra quando clicar na tela...igorobm escreveu:E bem simples, você vai criar um botão, colocar o GameObject que esta com a script responsável, e configurar qual função ele vai chamar.
https://prnt.sc/1ywliav
verme1311- Avançado
- PONTOS : 2291
REPUTAÇÃO : 16
Respeito as regras :
Re: COMO TROCAR FORMA DE ATAQUE DO (CLICK DO MOUSE para BOTÃO UI MOBILE)
Vai na função que ataca clica com o botão direito nela e clica em "Localizar todas as referências". Isso se vc usa o Visual Studio nao sei se tem no Visual Code. Quando vc fizer isso vai aparecer todos os scripts que estão chamando ela vc pode ir comentando para ver onde que chama quando vc clica na tela.
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Tópicos semelhantes
» Como posso trocar com scrool do mouse
» A Unity detecta o click mouse como um touch?
» Como faço para este item aparecer no meu inventário de forma correta?
» Como abrir portas/gavetas com click do mouse, usando raycast!
» Dúvida de como instanciar um onjeto com um click do mouse em determinado lugar.
» A Unity detecta o click mouse como um touch?
» Como faço para este item aparecer no meu inventário de forma correta?
» Como abrir portas/gavetas com click do mouse, usando raycast!
» Dúvida de como instanciar um onjeto com um click do mouse em determinado lugar.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos