@DANICH70
Разбираюсь в Unity 2D/3D

Не понимаю, в чем проблема с GameObject (Unity 3D)?

(UNITY 3D) Вообщем, у меня в игре есть платформа и Game Object. Я сделал так, чтобы Game Object всегда двигался прямо и управлялся с помощью джойстика по X. Также сделал с камерой, чтобы она всегда двигалась прямо (но без управлением джостиком :). Тоесть у каждого одинаковая скорость, и таким образом камера следит за GameObject. Но! Почему-то через пару секунд (секунды 4) GameObject останавливается. Не понимаю в чем проблема. Вот код на GameObject:
using UnityEngine;
using System.Collections;
public class NewBehaviour : MonoBehaviour
{
    public GameObject player;
    public int speedRotation = 3;
    public int speed = 5;
    public int jumpSpeed = 50;

    void Start()
    {
        player = (GameObject)this.gameObject;
    }
    void Update()
    {

        {
            player.transform.position += player.transform.forward * speed * Time.deltaTime;
        }
    }
}


И вот на камеру:
using UnityEngine;
using System.Collections;
public class camera : MonoBehaviour
{
    public GameObject player;
    public int speedRotation = 3;
    public int speed = 5;
    public int jumpSpeed = 50;

    void Start()
    {
        player = (GameObject)this.gameObject;
    }
    void Update()
    {

        {
            player.transform.position += player.transform.up * speed * Time.deltaTime;
        }
    }
}


И на джойстик:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyScript : MonoBehaviour
{


    protected Joystick joystick;


    void Start()
    {
        joystick = FindObjectOfType<Joystick>();
    }

    // Update is called once per frame
    void Update()
    {
        var rigidbody = GetComponent<Rigidbody>();

        rigidbody.velocity = new Vector3(joystick.Horizontal * 10f,
                                         rigidbody.velocity.y);

    }
}
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ответы на вопрос 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Проблема с данными скриптами никак не связана, что-то в сцене мешает, тут вам видней.

По коду:
player.transform.position += player.transform.up * speed * Time.deltaTime;
//проще так
gameObject.transform.position += gameObject.transform.up * speed * Time.deltaTime

Ну или сохранять ссылку на Transform объекта в переменную, ведь именно его скрипт дёргает.

У вас практически одинаковые классы. Сделайте наследования либо, по простому, булевый переключатель для формулы рассчетов, типа:
если (указанКакКамера == да)
    player.transform.position += player.transform.up * speed * Time.deltaTime;
иначе
    player.transform.position += player.transform.forward * speed * Time.deltaTime;


Или вы нас обманываете и у вас скрипты не целиком приведены?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы