none
Некорректно работает перемещение персонажа всторону RRS feed

  • Вопрос

  • Всем привет, Вот часть скрипта отвечающая за движение

    public class Hero : MonoBehaviour { public CharacterController hero; public float speed=10; public float gravity = 5F; Vector3 tempPos; // Use this for initialization void Start () { hero = gameObject.GetComponent<CharacterController>(); } // Update is called once per frame void Update() { tempPos = hero.transform.position;//получаем позицию игрока float Newpos;//Поле, в которое попадут координаты преобразованные в число типа float float CorrentPos=transform.position.x; float PosZ = hero.transform.position.z; float PosX = hero.transform.position.x; if (Input.GetKey(KeyCode.W)) { PosX = PosX*-1+ (speed * 100) * Time.deltaTime;//к текущей позиции добавили в направлении вперед немного)) Newpos = PosX; Vector3 directionW = new Vector3(Newpos, hero.transform.position.y * -gravity, hero.transform.position.z * -gravity); hero.Move(directionW*Time.deltaTime); } if (Input.GetKey(KeyCode.S)) { PosX = PosX + speed +PosX*-1+-1* Time.deltaTime; Newpos = PosX; Vector3 directionS = new Vector3((CorrentPos - Newpos), tempPos.y*-gravity, tempPos.z*-gravity); hero.Move(directionS*Time.deltaTime);

    }

    - тут все впорядке, но при попытке реализовать движение в сторону - я столкнулся с проблемой: 

    if (Input.GetKey(KeyCode.D))
            {
                PosZ = PosZ + speed * Time.deltaTime;//к текущей позиции добавили в направлении вперед немного))
                Newpos = PosZ;
                Vector3 directionD = new Vector3(hero.transform.position.x, hero.transform.position.y * -gravity, Newpos);
               
    
                hero.Move(directionD * Time.deltaTime);
    
    
    
    
    
            }

    - персонаж двигается назад, а не в сторону . Почему так?





    2 декабря 2016 г. 18:20