统一使可移动的精灵可点击

我有一个玩家精灵,可以在点击屏幕上的任何位置移动。如果单击播放器精灵,我正在尝试弹出播放器信息面板。


但不幸的是,我只让玩家移动了几个像素。我有一个Box Collider 2d添加到 sprite 和一个事件触发器设置为指针单击以运行该方法ShowPlayerInfoPanel


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;


public class PlayerController : MonoBehaviour {


    //Player Movement

    float speed = 2f;

    Vector2 targetPos;


    private Rigidbody2D myRigidbody;

    private Animator myAnim;


    private static bool playerExists;

    public static PlayerController instance;


    public string exitPortal;

    public bool startMoving;


    public float smoothTime = 0.3F;

    private Vector3 velocity = Vector3.zero;


    //Player Info

    public string displayName;

    public string coins;


    //Player Panel display

    public GameObject playerInfoPanel;


    private void Start()

    {


        myRigidbody = GetComponent<Rigidbody2D>();

        myAnim = GetComponent<Animator>();


        if(instance == null){

            instance = this;

        } else {

            Destroy(gameObject);

        }


        DontDestroyOnLoad(transform.gameObject);


        targetPos = transform.position;


    }


    void Update()

    {

        if (Input.GetMouseButtonDown(0))

        {

            targetPos = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);

            startMoving = true;

        }

        if ((Vector2)transform.position != targetPos && startMoving)

        {

            Move();

        } else {

            myAnim.SetBool("PlayerMoving", false);

        }

    }


    void Move()

    {

        Vector2 oldPos = transform.position;

        transform.position = Vector2.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);

        //transform.position = Vector3.SmoothDamp(transform.position, targetPos, ref velocity, smoothTime);


        Vector2 movement = (Vector2)transform.position - oldPos;


        myAnim.SetBool("PlayerMoving", true);


        myAnim.SetFloat("Horizontal", movement.x);

        myAnim.SetFloat("Vertical", movement.y);

    }




幕布斯7119047
浏览 81回答 1
1回答

慕哥6287543

使用游戏对象上的对撞机,您只需使用OnMouseDown来检测对象何时被单击。void OnMouseDown(){&nbsp; &nbsp; ShowPlayerInfoPanel();}
打开App,查看更多内容
随时随地看视频慕课网APP