好吧所以我正在尝试开发一个游戏,其中玩家可以选择一个角色然后所述角色可以像另一个场景上的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));
}
}
}
如果有办法让玩家移动它会有所帮助。欢呼声。
答案 0 :(得分:0)
最简单的方法是在没有画布的情况下将其重新创建为Empty。除了GUI的图像之外,您还需要调整所有正在使用的图像的大小。不要将玩家创建为GUI。