在Unity中移动播放器UI图像

时间:2017-11-24 14:49:31

标签: c# unity3d

好吧所以我正在尝试开发一个游戏,其中玩家可以选择一个角色然后所述角色可以像另一个场景上的RPG一样移动。我真的在努力使角色移动,并希望得到帮助或建议。播放器是使用Player标签设置的UI图像。玩家位于名为Player的GameObject子项下名为PlayerCanvas的空游戏对象中。玩家试图移动但被设置回先前的位置(不动)。播放器创建脚本与播放器移动脚本一起位于子播放器上。

玩家创建脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterCreation : MonoBehaviour {
    private List<GameObject> players;
    // Default Index for players
    private int selectionIndex = 0;

    private void Start()
    {
        players = new List<GameObject>();
        foreach(Transform t in transform)
        {
            players.Add(t.gameObject);
            t.gameObject.SetActive(false);
        }
        players[selectionIndex].SetActive(true);
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            Application.Quit();
        }
    }

    public void Select (int index)
    {
        if(index == selectionIndex)
        {
            return;
        }
        if(index < 0 || index >= players.Count)
        {
            return;
        }
        players[selectionIndex].SetActive(false);
        selectionIndex = index;
        players[selectionIndex].SetActive(true);
    }
}

玩家移动脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed;

    // Use this for initialization
    void Start () {
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < 0.5f) {
            transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
        }
        if (Input.GetAxisRaw("Vertical") > 0.5f || Input.GetAxisRaw("Vertical") < 0.5f) {
            transform.Translate(new Vector3(Input.GetAxisRaw("Vertical") * moveSpeed * Time.deltaTime, 0f, 0f));
        }
    }
}

如果有办法让玩家移动它会有所帮助。欢呼声。

1 个答案:

答案 0 :(得分:0)

最简单的方法是在没有画布的情况下将其重新创建为Empty。除了GUI的图像之外,您还需要调整所有正在使用的图像的大小。不要将玩家创建为GUI。