forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Проблемы с бегом игрока (http://forum.boolean.name/showthread.php?t=17883)

SGREED 14.02.2013 11:33

Проблемы с бегом игрока
 
Вот есть код:
PHP код:

using UnityEngine;
 
public class 
Player MonoBehaviour
{
    
// скорость ходьбы и скорость поворота в секунду
    
public float moveSpeed 2;
    public 
float turnSpeed 90;
 
    private 
CharacterController _controller;
    private 
Transform _thisTransform;
 
    public 
void Start()
    {
        
// Получаем контроллер
        
_controller GetComponent<CharacterController>();
 
        
// Получаем компонент трансформации объекта, к которому привязан данный компонент
        
_thisTransform transform;
    }
  
void Update() {
        if (
Input.GetKey("q"))
        {
            
animation.Play ("run");
            
moveSpeed 4;
        }
        else
         if (
Input.GetKey("w"))
        {
            
animation.Play ("walk");
            
moveSpeed 2;
        }
        else
        {
            
animation.Play ("idle");
            
moveSpeed 2;
            }
    }
    public 
void FixedUpdate()
    {
        
// Рассчитываем позицию
        
_controller.Move(_thisTransform.forward moveSpeed Time.deltaTime Input.GetAxis("Vertical") +
                        
Vector3.down 10.0f Time.deltaTime);
          
                
// Рассчитываем поворот
        
Quaternion rot Quaternion.AngleAxis(
            
turnSpeed Time.deltaTime Input.GetAxis("Horizontal"), Vector3.up);
        
_thisTransform.rotation *= rot;

    }


клавиша " q " бежать, только когда нажимаешь " w " он идет а потом ище если нажать " q " он начинает воспроизводить анимацию и бежать.
вроде круто,
так вот, когда я просто нажму клавишу " q " (бежать) он не бежит а воспроизводит анимацию.
Как мне сделать так что бы в хотьбе была проверка if что когда скорость равна [2] и потом только можна задействувать бег?

pax 14.02.2013 15:00

Ответ: Проблемы с бегом игрока
 
попробуй замени везде Play на CrossFade

Dream 14.02.2013 15:03

Ответ: Проблемы с бегом игрока
 
PHP код:

using UnityEngine;
 
public class 
Player MonoBehaviour
{
    
// скорость ходьбы и скорость поворота в секунду
    
public float moveSpeed 2;
    public 
float turnSpeed 90;
 
    private 
CharacterController _controller;
    private 
Transform _thisTransform;
 
    public 
void Start()
    {
        
// Получаем контроллер
        
_controller GetComponent<CharacterController>();
 
        
// Получаем компонент трансформации объекта, к которому привязан данный компонент
        
_thisTransform transform;
    }
  
void Update() {
        
         if (
Input.GetKey("w"))
        {
if (
Input.GetKey("q"))
        {
            
animation.Play ("run");
            
moveSpeed 4;
        }
        else
{
            
animation.Play ("walk");
            
moveSpeed 2;
        }
}
        else

        {
            
animation.Play ("idle");
            
moveSpeed 2;
            }
    }
    public 
void FixedUpdate()
    {
        
// Рассчитываем позицию
        
_controller.Move(_thisTransform.forward moveSpeed Time.deltaTime Input.GetAxis("Vertical") +
                        
Vector3.down 10.0f Time.deltaTime);
          
                
// Рассчитываем поворот
        
Quaternion rot Quaternion.AngleAxis(
            
turnSpeed Time.deltaTime Input.GetAxis("Horizontal"), Vector3.up);
        
_thisTransform.rotation *= rot;

    }



Уже хотябы так сделай

SGREED 14.02.2013 17:51

Ответ: Проблемы с бегом игрока
 
спасибо за CrossFade, хорошая функция =)
И спасибо за переработку скрипта)
Все работает нормально


Часовой пояс GMT +4, время: 09:13.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot