Движение персонажа вокруг объекта

Программирование на Юнити.

Движение персонажа вокруг объекта

Сообщение TheSimplest 11 фев 2018, 23:08

Суть в принципе ясна, но попытаюсь подробнее расписать. Нужно, что бы персонаж двигался вокруг объекта, но не постоянно. Например - нажимаю я кнопку A и персонаж двигается влево вокруг объекта, отпускаю A и он останавливается, а если хочу в право, то нажимаю D и он двигается в право вокруг объекта. И главное, что бы это не было привязано к какой то определённой оси, персонаж должен иметь возможность так же подходить к объекту и отходить от него. Как мне реализовать сие действие, помогите?! ~x( P.S. вот вспомнил, такая система в Dark souls используется :-bd
TheSimplest
UNец
 
Сообщения: 13
Зарегистрирован: 18 дек 2017, 04:01

Re: Движение персонажа вокруг объекта

Сообщение waruiyume 12 фев 2018, 00:05

Синтаксис:
Используется csharp
using UnityEngine;

public class RelativeMoveTest : MonoBehaviour
{
    public Transform target;
    private const float SPEED = 5;

    void Update()
    {
        var tarPos = target.position;
        var palyerPos = transform.position;
        var dirToTarget = tarPos - palyerPos;
        dirToTarget.y = 0;
        var lookAtTargetRot = Quaternion.LookRotation(dirToTarget);
        var moveVector = lookAtTargetRot * new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")) *
                         SPEED * Time.deltaTime;
        transform.position += moveVector;
    }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Движение персонажа вокруг объекта

Сообщение TheSimplest 12 фев 2018, 00:39

waruiyume писал(а):
Синтаксис:
Используется csharp
using UnityEngine;

public class RelativeMoveTest : MonoBehaviour
{
    public Transform target;
    private const float SPEED = 5;

    void Update()
    {
        var tarPos = target.position;
        var palyerPos = transform.position;
        var dirToTarget = tarPos - palyerPos;
        dirToTarget.y = 0;
        var lookAtTargetRot = Quaternion.LookRotation(dirToTarget);
        var moveVector = lookAtTargetRot * new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")) *
                         SPEED * Time.deltaTime;
        transform.position += moveVector;
    }
}
 

Чувак, не знаю кто ты, но ты лучший!!! ^:)^ ^:)^ ^:)^
TheSimplest
UNец
 
Сообщения: 13
Зарегистрирован: 18 дек 2017, 04:01


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6