Переработка системы счета - Форум Игроделов
Вс, 09 Фев 2025, 18:42 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Переработка системы счета
QNicolyaДата: Вт, 27 Дек 2011, 19:29 | Сообщение # 1
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
И так, буду говорить без прелюдий... Скачал я исходники ПэкМэна, и столкнулся с кучей проблем. Многие из них я уже решил, остались только главные.
И одна из них, это система счета. Вообще, меня в ней все устраивает... Почти... Не может же быть аркада без штрафов?
Так вот, есть два скрипта:

Контроллер врагов

Code

var howLong = 1.0;
var howFast = 8.0;
private var nextUpdate = 0.0;
private var direction : Vector3;

function Update () {
if (Time.time > nextUpdate) {
nextUpdate = Time.time + (Random.value * howLong);
direction = Random.onUnitSphere;
direction.y = 0;
direction.Normalize ();
direction *= howFast;
direction.y = 1.5 - transform.position.y;
}
var controller = GetComponent(CharacterController);
controller.Move(direction * Time.deltaTime);
}


и Система счета

Code

var scoreDisplay : GUIText;
var smallPelletScore = 10;
var superPelletScore = 100;
private var score = 0;

function Update () {
scoreDisplay.text = "Score: " + score;
}

function OnTriggerEnter (other : Collider) {
if (other.name == "BasicPellet(Clone)") {
score += smallPelletScore;
} else if (other.name == "SuperPellet(Clone)") {
score += superPelletScore;
}
Destroy (other.gameObject);
}


Так вот, в чем вся суть вопроса? Как сделать, что бы при столкновении с врагом у тебя отнималось -n очков?
Заранее, всем спасибо.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.

Сообщение отредактировал Dekterev - Ср, 28 Дек 2011, 13:40
 
СообщениеИ так, буду говорить без прелюдий... Скачал я исходники ПэкМэна, и столкнулся с кучей проблем. Многие из них я уже решил, остались только главные.
И одна из них, это система счета. Вообще, меня в ней все устраивает... Почти... Не может же быть аркада без штрафов?
Так вот, есть два скрипта:

Контроллер врагов

Code

var howLong = 1.0;
var howFast = 8.0;
private var nextUpdate = 0.0;
private var direction : Vector3;

function Update () {
if (Time.time > nextUpdate) {
nextUpdate = Time.time + (Random.value * howLong);
direction = Random.onUnitSphere;
direction.y = 0;
direction.Normalize ();
direction *= howFast;
direction.y = 1.5 - transform.position.y;
}
var controller = GetComponent(CharacterController);
controller.Move(direction * Time.deltaTime);
}


и Система счета

Code

var scoreDisplay : GUIText;
var smallPelletScore = 10;
var superPelletScore = 100;
private var score = 0;

function Update () {
scoreDisplay.text = "Score: " + score;
}

function OnTriggerEnter (other : Collider) {
if (other.name == "BasicPellet(Clone)") {
score += smallPelletScore;
} else if (other.name == "SuperPellet(Clone)") {
score += superPelletScore;
}
Destroy (other.gameObject);
}


Так вот, в чем вся суть вопроса? Как сделать, что бы при столкновении с врагом у тебя отнималось -n очков?
Заранее, всем спасибо.

Автор - QNicolya
Дата добавления - 27 Дек 2011 в 19:29
AswoДата: Ср, 28 Дек 2011, 12:34 | Сообщение # 2
КЗОИ
 
Сообщений: 1031
Награды: 18
Репутация: 430
Статус: Offline
В функцию function OnTriggerEnter (other : Collider) впиши еще одно условие:

Code
if (other.name == "*тут имя того, с кем столкнулся*") {
score -= *тут сколько вычитать*;
}

Вроде бы как-то так.


end.
 
СообщениеВ функцию function OnTriggerEnter (other : Collider) впиши еще одно условие:

Code
if (other.name == "*тут имя того, с кем столкнулся*") {
score -= *тут сколько вычитать*;
}

Вроде бы как-то так.

Автор - Aswo
Дата добавления - 28 Дек 2011 в 12:34
QNicolyaДата: Ср, 28 Дек 2011, 12:58 | Сообщение # 3
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Aswo, вписал, ошибки исправил. Но при столкновении очки не отнимаются...

Получилось так:
Новый скрипт счета
Code

var scoreDisplay : GUIText;
var smallPelletScore = 10;
var superPelletScore = 100;
var MinusScore = 200;
private var score = 0;

function Update () {
scoreDisplay.text = "Score: " + score;
}

function OnTriggerEnter (other : Collider) {
if (other.name == "BasicPellet(Clone)") {
score += smallPelletScore;
} else if (other.name == "SuperPellet(Clone)") {
score += superPelletScore;
}
else if (other.name == "Blinky") {
score -= MinusScore;
}
Destroy (other.gameObject);


Предупреждение!
Есть-же тег code! Лепите спойлеры где надо и не надо...
Dekterev


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.

Сообщение отредактировал Dekterev - Ср, 28 Дек 2011, 13:44
 
СообщениеAswo, вписал, ошибки исправил. Но при столкновении очки не отнимаются...

Получилось так:
Новый скрипт счета
Code

var scoreDisplay : GUIText;
var smallPelletScore = 10;
var superPelletScore = 100;
var MinusScore = 200;
private var score = 0;

function Update () {
scoreDisplay.text = "Score: " + score;
}

function OnTriggerEnter (other : Collider) {
if (other.name == "BasicPellet(Clone)") {
score += smallPelletScore;
} else if (other.name == "SuperPellet(Clone)") {
score += superPelletScore;
}
else if (other.name == "Blinky") {
score -= MinusScore;
}
Destroy (other.gameObject);


Предупреждение!
Есть-же тег code! Лепите спойлеры где надо и не надо...
Dekterev

Автор - QNicolya
Дата добавления - 28 Дек 2011 в 12:58
AswoДата: Ср, 28 Дек 2011, 13:02 | Сообщение # 4
КЗОИ
 
Сообщений: 1031
Награды: 18
Репутация: 430
Статус: Offline
QNicolya, else убери.

Добавлено (28.12.2011, 13:02)
---------------------------------------------
И проверь имя, такое ли оно.


end.
 
СообщениеQNicolya, else убери.

Добавлено (28.12.2011, 13:02)
---------------------------------------------
И проверь имя, такое ли оно.


Автор - Aswo
Дата добавления - 28 Дек 2011 в 13:02
QNicolyaДата: Ср, 28 Дек 2011, 13:07 | Сообщение # 5
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Aswo, имя такое, даже с убранным елсом не работает.

Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеAswo, имя такое, даже с убранным елсом не работает.

Автор - QNicolya
Дата добавления - 28 Дек 2011 в 13:07
AswoДата: Ср, 28 Дек 2011, 13:11 | Сообщение # 6
КЗОИ
 
Сообщений: 1031
Награды: 18
Репутация: 430
Статус: Offline
QNicolya, триггер есть на врагах? Если нет, то повесь и столкновение опиши с триггом (имя его).

end.
 
СообщениеQNicolya, триггер есть на врагах? Если нет, то повесь и столкновение опиши с триггом (имя его).

Автор - Aswo
Дата добавления - 28 Дек 2011 в 13:11
QNicolyaДата: Ср, 28 Дек 2011, 13:26 | Сообщение # 7
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Aswo, триггер повесил, все равно не работает. А как правильно описать столкновение с триггером?

Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеAswo, триггер повесил, все равно не работает. А как правильно описать столкновение с триггером?

Автор - QNicolya
Дата добавления - 28 Дек 2011 в 13:26
AswoДата: Ср, 28 Дек 2011, 13:38 | Сообщение # 8
КЗОИ
 
Сообщений: 1031
Награды: 18
Репутация: 430
Статус: Offline
Ну так-то у тебя вроде правильно. Попробуй вот так:

Code
function OnTriggerEnter (other : Collider)
{  
  if (other.gameObject.name == "BasicPellet(Clone)")
  {  
   score += smallPelletScore;  
  }
  else if (other.gameObject.name == "SuperPellet(Clone)")  
  {
   score += superPelletScore;  
  }  
  Destroy (other.gameObject);
   
  if (other.gameObject.name == "Blinky")
  {  
   score -= MinusScore;  
  }  
}


end.
 
СообщениеНу так-то у тебя вроде правильно. Попробуй вот так:

Code
function OnTriggerEnter (other : Collider)
{  
  if (other.gameObject.name == "BasicPellet(Clone)")
  {  
   score += smallPelletScore;  
  }
  else if (other.gameObject.name == "SuperPellet(Clone)")  
  {
   score += superPelletScore;  
  }  
  Destroy (other.gameObject);
   
  if (other.gameObject.name == "Blinky")
  {  
   score -= MinusScore;  
  }  
}

Автор - Aswo
Дата добавления - 28 Дек 2011 в 13:38
QNicolyaДата: Ср, 28 Дек 2011, 13:40 | Сообщение # 9
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Aswo, все равно, не работает. У тебя скайп есть? Будет проще.

Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеAswo, все равно, не работает. У тебя скайп есть? Будет проще.

Автор - QNicolya
Дата добавления - 28 Дек 2011 в 13:40
AswoДата: Ср, 28 Дек 2011, 14:19 | Сообщение # 10
КЗОИ
 
Сообщений: 1031
Награды: 18
Репутация: 430
Статус: Offline
Я дома после 17:10 по МСК буду. Если без меня не помогут, то помогу. Кстати этот скрипт на Player ведь висит?

end.
 
СообщениеЯ дома после 17:10 по МСК буду. Если без меня не помогут, то помогу. Кстати этот скрипт на Player ведь висит?

Автор - Aswo
Дата добавления - 28 Дек 2011 в 14:19
QNicolyaДата: Ср, 28 Дек 2011, 15:23 | Сообщение # 11
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Aswo, конечно висит happy

В ЛС
Aswo


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеAswo, конечно висит happy

В ЛС
Aswo

Автор - QNicolya
Дата добавления - 28 Дек 2011 в 15:23
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025