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