Помогите найти ошибку в скрипте управления персонажем (JS) - Форум Игроделов
Чт, 02 Май 2024, 11:52 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Помогите найти ошибку в скрипте управления персонажем (JS)
Помогите найти ошибку в скрипте управления персонажем (JS)
pupkinДата: Вт, 17 Ноя 2015, 11:04 | Сообщение # 1
Нет аватара
 
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Привет!
Есть скрипт управления персонажем для мобильных платформ.
Проблема заключается в следующем: через 10-15 секунд после запуска приложения перестают реагировать на прикосновения Pointer Up/Down, при этом остальные UI элементы на сцене работают. Подозреваю, что накосячил с velocity.x, но что-то как-то не могу понять, где именно..гляжу замыленным взором и не вижу..

Код
#pragma strict

var jumpSound: AudioClip;
var walkSpeed: float = 30.0;

var pressedLeftButton: boolean = false;
var pressedRightButton: boolean = false;
var pressedJumpButton: boolean = false;

private var jumpCounter:float = 0.0;
private var jumpHeight:float = 15.0;
private var hit: RaycastHit;

function FixedUpdate () {
        jumpCounter += Time.deltaTime;
        if (pressedLeftButton == true || pressedRightButton == true) {
        
                if (pressedLeftButton == true) {
                        if(GetComponent.<Rigidbody>().velocity.x > 0){
                    GetComponent.<Rigidbody>().velocity.x = 0;
                        }
                        if(GetComponent.<Rigidbody>().velocity.x > -walkSpeed){
                    GetComponent.<Rigidbody>().velocity.x -= 48*Time.deltaTime;
                        }
                }
        
                if (pressedRightButton == true) {
                        if(GetComponent.<Rigidbody>().velocity.x < 0){
                    GetComponent.<Rigidbody>().velocity.x = 0;
                        }
                        if(GetComponent.<Rigidbody>().velocity.x < walkSpeed){
                        GetComponent.<Rigidbody>().velocity.x += 48*Time.deltaTime;
                        }
                }
        } else {
        GetComponent.<Rigidbody>().velocity.x = 0.0;
        }
        if (pressedJumpButton == true) {
                if (Physics.Raycast (transform.position - Vector3(0,0.25,0), Vector3(0,-1,0), hit)) {
                        if(hit.distance < 1 && hit.transform.tag != "spikes" && hit.transform.tag != "enemy"){
                    GetComponent.<Rigidbody>().velocity.y = jumpHeight;
                    if(jumpCounter > 0.25){
                    GetComponent.<AudioSource>().PlayOneShot(jumpSound);
                    jumpCounter = 0.0;
                    }
                        }
                }
        }
}
function LeftButtonPress() {
        pressedLeftButton = true;
}
function LeftButtonNoPress() {
        pressedLeftButton = false;
        GetComponent.<Rigidbody>().velocity.x = 0.0;
}
function RightButtonPress() {
        pressedRightButton = true;
}
function RightButtonNoPress() {
        pressedRightButton = false;
        GetComponent.<Rigidbody>().velocity.x = 0.0;
}
function JumpButtonPress() {
        pressedJumpButton = true;
}
function JumpButtonNoPress() {
        pressedJumpButton = false;
}

Добавлено (17 Ноя 2015, 11:04)
---------------------------------------------
Всем спасибо, разобрался сам.

Сообщение отредактировал pupkin - Пн, 16 Ноя 2015, 12:31
 
СообщениеПривет!
Есть скрипт управления персонажем для мобильных платформ.
Проблема заключается в следующем: через 10-15 секунд после запуска приложения перестают реагировать на прикосновения Pointer Up/Down, при этом остальные UI элементы на сцене работают. Подозреваю, что накосячил с velocity.x, но что-то как-то не могу понять, где именно..гляжу замыленным взором и не вижу..

Код
#pragma strict

var jumpSound: AudioClip;
var walkSpeed: float = 30.0;

var pressedLeftButton: boolean = false;
var pressedRightButton: boolean = false;
var pressedJumpButton: boolean = false;

private var jumpCounter:float = 0.0;
private var jumpHeight:float = 15.0;
private var hit: RaycastHit;

function FixedUpdate () {
        jumpCounter += Time.deltaTime;
        if (pressedLeftButton == true || pressedRightButton == true) {
        
                if (pressedLeftButton == true) {
                        if(GetComponent.<Rigidbody>().velocity.x > 0){
                    GetComponent.<Rigidbody>().velocity.x = 0;
                        }
                        if(GetComponent.<Rigidbody>().velocity.x > -walkSpeed){
                    GetComponent.<Rigidbody>().velocity.x -= 48*Time.deltaTime;
                        }
                }
        
                if (pressedRightButton == true) {
                        if(GetComponent.<Rigidbody>().velocity.x < 0){
                    GetComponent.<Rigidbody>().velocity.x = 0;
                        }
                        if(GetComponent.<Rigidbody>().velocity.x < walkSpeed){
                        GetComponent.<Rigidbody>().velocity.x += 48*Time.deltaTime;
                        }
                }
        } else {
        GetComponent.<Rigidbody>().velocity.x = 0.0;
        }
        if (pressedJumpButton == true) {
                if (Physics.Raycast (transform.position - Vector3(0,0.25,0), Vector3(0,-1,0), hit)) {
                        if(hit.distance < 1 && hit.transform.tag != "spikes" && hit.transform.tag != "enemy"){
                    GetComponent.<Rigidbody>().velocity.y = jumpHeight;
                    if(jumpCounter > 0.25){
                    GetComponent.<AudioSource>().PlayOneShot(jumpSound);
                    jumpCounter = 0.0;
                    }
                        }
                }
        }
}
function LeftButtonPress() {
        pressedLeftButton = true;
}
function LeftButtonNoPress() {
        pressedLeftButton = false;
        GetComponent.<Rigidbody>().velocity.x = 0.0;
}
function RightButtonPress() {
        pressedRightButton = true;
}
function RightButtonNoPress() {
        pressedRightButton = false;
        GetComponent.<Rigidbody>().velocity.x = 0.0;
}
function JumpButtonPress() {
        pressedJumpButton = true;
}
function JumpButtonNoPress() {
        pressedJumpButton = false;
}

Добавлено (17 Ноя 2015, 11:04)
---------------------------------------------
Всем спасибо, разобрался сам.


Автор - pupkin
Дата добавления - 17 Ноя 2015 в 11:04
Форум Игроделов » UNITY3D » СКРИПТИНГ » Помогите найти ошибку в скрипте управления персонажем (JS)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024