Joystick для игры "Змейка 3D" на Unity3D не работает корректно
Я достаточно долго создаю игру Змейка 3D. Сейчас я решил делать управление для телефона, для этого я импортировал "Joystick pack" из Asset store. Я добавил в код управления змеёй сам джойстик, но код отказывается работать:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SnakeMovement : MonoBehaviour
{
public float Speed = 6;
public float RotationSpeed = 300;
public float z_ofset = -0.01f;
public GameObject tailPrefab;
public List<GameObject> tailObject = new List<GameObject>();
public Text onScreen;
public int score;
public Joystick joystick;
// Use this for initialization
void Start()
{
tailObject.Add(gameObject);
}
// Update is called once per frame
void Update()
{
onScreen.text = "Score = " + score;
transform.Translate(Vector3.forward * Speed * Time.deltaTime);
if (Input.Joystick(joystick.Horizontal))
{
transform.Rotate(Vector3.up * RotationSpeed * Time.deltaTime);
}
if (Input.Joystick(joystick.Horizontal))
{
transform.Rotate(Vector3.down * RotationSpeed * Time.deltaTime);
}
}
public void AddTail()
{
Vector3 newtailPosition = tailObject[tailObject.Count - 1].transform.position;
newtailPosition.z += z_ofset;
tailObject.Add(GameObject.Instantiate(tailPrefab, newtailPosition, Quaternion.identity) as GameObject);
}
public void ScoreAll(){
score = score + 1;
}
}
При компиляции программы у меня в Unity появляется ошибка:
error CS0117: 'input' does not contain a definition for 'Joystick'
Ответы (1 шт):
Автор решения: Кирилл Федин
→ Ссылка
У меня получилось решить проблему с кодом, решение было достаточно близко:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SnakeMovement : MonoBehaviour
{
public float Speed = 6;
public float RotationSpeed = 300;
public float z_ofset = -0.01f;
public GameObject tailPrefab;
public List<GameObject> tailObject = new List<GameObject>();
public Text onScreen;
public int score;
public Joystick joystick;
// Use this for initialization
void Start()
{
tailObject.Add(gameObject);
}
// Update is called once per frame
void Update()
{
onScreen.text = "Score = " + score;
transform.Translate(Vector3.forward * Speed * Time.deltaTime);
Vector3 direction1 = Vector3.up * joystick.Horizontal;
transform.Rotate(direction1 * RotationSpeed * Time.deltaTime);
}
public void AddTail()
{
Vector3 newtailPosition = tailObject[tailObject.Count - 1].transform.position;
newtailPosition.z += z_ofset;
tailObject.Add(GameObject.Instantiate(tailPrefab, newtailPosition, Quaternion.identity) as GameObject);
}
public void ScoreAll(){
score = score + 1;
}
}