Создание простого арканоида - Форум Игроделов
Пн, 20 Май 2024, 01:23 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » HELP & FAQ » Создание простого арканоида
Создание простого арканоида
Maxim_EpihinДата: Пт, 31 Авг 2012, 17:13 | Сообщение # 1
 
Сообщений: 11
Награды: 0
Репутация: 0
Статус: Offline
Помогите пожалуйста, вот хочу создать просто арканоид, но вот не получается написать скипты... Если есть какие-то мануалы или уроки киньте ссылку.
 
СообщениеПомогите пожалуйста, вот хочу создать просто арканоид, но вот не получается написать скипты... Если есть какие-то мануалы или уроки киньте ссылку.

Автор - Maxim_Epihin
Дата добавления - 31 Авг 2012 в 17:13
seamanДата: Пт, 31 Авг 2012, 20:36 | Сообщение # 2
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Quote
не получается написать скипты.

Что не получается? Конкретные ошибки? Конкретные примеры? Ваши скрипты в студию! Это было бы правильнее.
Ну а так:

и далее

и далее
 
Сообщение
Quote
не получается написать скипты.

Что не получается? Конкретные ошибки? Конкретные примеры? Ваши скрипты в студию! Это было бы правильнее.
Ну а так:

и далее

и далее

Автор - seaman
Дата добавления - 31 Авг 2012 в 20:36
Maxim_EpihinДата: Сб, 01 Сен 2012, 22:32 | Сообщение # 3
 
Сообщений: 11
Награды: 0
Репутация: 0
Статус: Offline
Создал по его уроку арканоид, но вот такая проблемма - шарик может застрять на одной траектории, как это решить? Вот скрипты, использующиеся для контроллера мяча и платформы:
Code
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Ball : MonoBehaviour {

public float minSpeed = 15;
public float maxSpeed = 20;
private static float curSpeed = 0;
public float multiplier = 0.0f;
private Transform _t;

public List<GameObject> blocks;

void Start(){
blocks.AddRange(GameObject.FindGameObjectsWithTag("Block"));

ResetBall();
}

void Awake(){
_t = transform;
blocks = new List<GameObject>();
}

void Update(){
if(blocks.Count < 1)
WonLevel();
if(_t.position.y < -4.5)
MissedBall();
if(Input.GetKeyDown(KeyCode.R))
Application.LoadLevel("001");
}

void FixedUpdate(){
curSpeed = Vector3.Magnitude(rigidbody.velocity);

if(curSpeed > maxSpeed)
rigidbody.velocity /= curSpeed / maxSpeed;

if(curSpeed < minSpeed && curSpeed > 0)
rigidbody.velocity /= curSpeed / minSpeed;
}
void OnCollisionEnter(Collision col){
rigidbody.velocity += rigidbody.velocity * multiplier;
if(col.gameObject.CompareTag("Block"))
blocks.Remove(col.gameObject);
}
private void MissedBall(){
if(Lives.curLives-- < 1)
GameOver();
else
ResetBall();
}
private void ResetBall(){
_t.position = new Vector3 (Random.Range(-Player.xBoundry + 2 ,Player.xBoundry - 2),0,Player.zPosition);
_t.LookAt(GameObject.FindGameObjectWithTag("Player").transform.position);
rigidbody.AddRelativeForce(new Vector3 (0,0,minSpeed));
}
private void GameOver(){
Application.Quit();
}
private void WonLevel(){
Application.LoadLevel("002");
}
}


Выше предоставлен скрипт управления шаром

Code
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

public static float zPosition = 0;
public float yPosition = 0;
public static float xBoundry = 8.3f;
public float speed = 5;
private Transform _t;

void Awake(){
_t = transform;
}
void Start(){
_t.position = new Vector3 (0,yPosition,zPosition);
}
void Update(){
if(Input.GetAxis("Horizontal") !=0){
Debug.Log(Input.GetAxis("Horizontal"));
_t.position = new Vector3 (_t.position.x + Input.GetAxis("Horizontal") * speed * Time.deltaTime,yPosition,zPosition);
if(_t.position.x < -xBoundry + 2f)
_t.position = new Vector3 (-xBoundry + 2f,yPosition,zPosition);
else if(_t.position.x > xBoundry - 2f)
_t.position = new Vector3 (xBoundry - 2f,yPosition,zPosition);
}
}
}


А тут игрок

Добавлено (01.09.2012, 22:32)
---------------------------------------------
Ну просто офигенно все вы помогаете


Сообщение отредактировал Doc - Вс, 02 Сен 2012, 19:55
 
СообщениеСоздал по его уроку арканоид, но вот такая проблемма - шарик может застрять на одной траектории, как это решить? Вот скрипты, использующиеся для контроллера мяча и платформы:
Code
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Ball : MonoBehaviour {

public float minSpeed = 15;
public float maxSpeed = 20;
private static float curSpeed = 0;
public float multiplier = 0.0f;
private Transform _t;

public List<GameObject> blocks;

void Start(){
blocks.AddRange(GameObject.FindGameObjectsWithTag("Block"));

ResetBall();
}

void Awake(){
_t = transform;
blocks = new List<GameObject>();
}

void Update(){
if(blocks.Count < 1)
WonLevel();
if(_t.position.y < -4.5)
MissedBall();
if(Input.GetKeyDown(KeyCode.R))
Application.LoadLevel("001");
}

void FixedUpdate(){
curSpeed = Vector3.Magnitude(rigidbody.velocity);

if(curSpeed > maxSpeed)
rigidbody.velocity /= curSpeed / maxSpeed;

if(curSpeed < minSpeed && curSpeed > 0)
rigidbody.velocity /= curSpeed / minSpeed;
}
void OnCollisionEnter(Collision col){
rigidbody.velocity += rigidbody.velocity * multiplier;
if(col.gameObject.CompareTag("Block"))
blocks.Remove(col.gameObject);
}
private void MissedBall(){
if(Lives.curLives-- < 1)
GameOver();
else
ResetBall();
}
private void ResetBall(){
_t.position = new Vector3 (Random.Range(-Player.xBoundry + 2 ,Player.xBoundry - 2),0,Player.zPosition);
_t.LookAt(GameObject.FindGameObjectWithTag("Player").transform.position);
rigidbody.AddRelativeForce(new Vector3 (0,0,minSpeed));
}
private void GameOver(){
Application.Quit();
}
private void WonLevel(){
Application.LoadLevel("002");
}
}


Выше предоставлен скрипт управления шаром

Code
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

public static float zPosition = 0;
public float yPosition = 0;
public static float xBoundry = 8.3f;
public float speed = 5;
private Transform _t;

void Awake(){
_t = transform;
}
void Start(){
_t.position = new Vector3 (0,yPosition,zPosition);
}
void Update(){
if(Input.GetAxis("Horizontal") !=0){
Debug.Log(Input.GetAxis("Horizontal"));
_t.position = new Vector3 (_t.position.x + Input.GetAxis("Horizontal") * speed * Time.deltaTime,yPosition,zPosition);
if(_t.position.x < -xBoundry + 2f)
_t.position = new Vector3 (-xBoundry + 2f,yPosition,zPosition);
else if(_t.position.x > xBoundry - 2f)
_t.position = new Vector3 (xBoundry - 2f,yPosition,zPosition);
}
}
}


А тут игрок

Добавлено (01.09.2012, 22:32)
---------------------------------------------
Ну просто офигенно все вы помогаете

Автор - Maxim_Epihin
Дата добавления - 01 Сен 2012 в 22:32
seamanДата: Сб, 01 Сен 2012, 23:04 | Сообщение # 4
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
1. Вам никто ничего не должен.
2. Мы арканоид не делаем - соответственно уроки не смотрели. Соответственно с ходу разобраться в Ваших скриптах не каждый сможет. Следовательно Вам придется ждать пока кто-то решит их разобрать.
3. Есть тег Code - он нормально форматирует код. Под спойлером получается нечитаемая каша. Следовательно вероятность что кто-то разберет Ваши скрипты уменьшается.
4. Мне вот непонятно что означает "шарик может застрять на одной траектории"
Так что вывод - потерпите. Наверняка со временем кто-то поможет. Ну а как ускорить - вывод делайте сами.
 
Сообщение1. Вам никто ничего не должен.
2. Мы арканоид не делаем - соответственно уроки не смотрели. Соответственно с ходу разобраться в Ваших скриптах не каждый сможет. Следовательно Вам придется ждать пока кто-то решит их разобрать.
3. Есть тег Code - он нормально форматирует код. Под спойлером получается нечитаемая каша. Следовательно вероятность что кто-то разберет Ваши скрипты уменьшается.
4. Мне вот непонятно что означает "шарик может застрять на одной траектории"
Так что вывод - потерпите. Наверняка со временем кто-то поможет. Ну а как ускорить - вывод делайте сами.

Автор - seaman
Дата добавления - 01 Сен 2012 в 23:04
Форум Игроделов » UNITY3D » HELP & FAQ » Создание простого арканоида
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024