Страница 1 из 1

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

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

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

СообщениеДобавлено: 12 фев 2018, 00:05
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;
    }
}
 

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

СообщениеДобавлено: 12 фев 2018, 00:39
TheSimplest
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;
    }
}
 

Чувак, не знаю кто ты, но ты лучший!!! ^:)^ ^:)^ ^:)^