2d игра
serega990306 Дата: Вс, 16 Мар 2014, 15:00 | Сообщение # 1
Сообщений: 17
Награды:
0
Репутация:
0
Статус: Offline
Пытаюсь сделать небольшую игрушку, но не могу кое с чем разобраться. Персонаж постоянно двигается впереди у него на встречи препятствия, которые надо перепрыгивать. Также есть пол и потолок. Возможно вообще сделать так чтобы при нажатии, персонаж, бежавший по полу, переворачивался и падал на потолок и дальше бежал по потолку? То есть при нажатии на кнопку он переворачивался и либо взлетал на потолок, либо падал на пол.
Сообщение Пытаюсь сделать небольшую игрушку, но не могу кое с чем разобраться. Персонаж постоянно двигается впереди у него на встречи препятствия, которые надо перепрыгивать. Также есть пол и потолок. Возможно вообще сделать так чтобы при нажатии, персонаж, бежавший по полу, переворачивался и падал на потолок и дальше бежал по потолку? То есть при нажатии на кнопку он переворачивался и либо взлетал на потолок, либо падал на пол. Автор - serega990306 Дата добавления - 16 Мар 2014 в 15:00
Левша Дата: Пн, 17 Мар 2014, 07:46 | Сообщение # 2
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Цитата serega990306 (
)
Как?
Код
gravityDirect = -gravityDirect; transform.up = -gravityDirect;
X.cor.R (Prologue)
Сообщение Цитата serega990306 (
)
Как?
Код
gravityDirect = -gravityDirect; transform.up = -gravityDirect;
Автор - Левша Дата добавления - 17 Мар 2014 в 07:46
ilyakos Дата: Пн, 17 Мар 2014, 12:13 | Сообщение # 3
Сообщений: 171
Награды:
0
Репутация:
8
Статус: Offline
Код
using UnityEngine; using System.Collections; public class Run : MonoBehaviour { public bool isCol; public bool isGo; public Transform hitObj; private Vector3 hitPoint; private Vector3 startPoint; public float timeout; // Use this for initialization void Start () { startPoint = transform.position; } // Update is called once per frame void Update () { if(!isGo){ transform.position += transform.forward*Time.deltaTime*3; } transform.position = Vector3.Lerp(transform.position,new Vector3(startPoint.x,transform.position.y,transform.position.z),Time.deltaTime*20); RaycastHit hit; Vector3 dir = transform.TransformDirection(Vector3.up*100); if(Physics.Raycast(transform.position,dir,out hit, 10)){ } if(Input.GetKeyDown(KeyCode.Space) && !isGo){ timeout = 2f; hitObj = hit.transform; hitPoint = hit.point; isGo = true; } if(Vector3.Distance(hitPoint,transform.position)<=0.5f){ isGo = false; } if(timeout>0){ transform.rotation = Quaternion.Lerp(transform.rotation,hitObj.rotation,Time.deltaTime*5f); timeout-=Time.deltaTime; } if(isGo){ transform.position = Vector3.Lerp(transform.position,new Vector3(transform.position.x,hitPoint.y,hitPoint.z),Time.deltaTime*3f); } } }
Сообщение отредактировал ilyakos - Пн, 17 Мар 2014, 12:13
Сообщение Код
using UnityEngine; using System.Collections; public class Run : MonoBehaviour { public bool isCol; public bool isGo; public Transform hitObj; private Vector3 hitPoint; private Vector3 startPoint; public float timeout; // Use this for initialization void Start () { startPoint = transform.position; } // Update is called once per frame void Update () { if(!isGo){ transform.position += transform.forward*Time.deltaTime*3; } transform.position = Vector3.Lerp(transform.position,new Vector3(startPoint.x,transform.position.y,transform.position.z),Time.deltaTime*20); RaycastHit hit; Vector3 dir = transform.TransformDirection(Vector3.up*100); if(Physics.Raycast(transform.position,dir,out hit, 10)){ } if(Input.GetKeyDown(KeyCode.Space) && !isGo){ timeout = 2f; hitObj = hit.transform; hitPoint = hit.point; isGo = true; } if(Vector3.Distance(hitPoint,transform.position)<=0.5f){ isGo = false; } if(timeout>0){ transform.rotation = Quaternion.Lerp(transform.rotation,hitObj.rotation,Time.deltaTime*5f); timeout-=Time.deltaTime; } if(isGo){ transform.position = Vector3.Lerp(transform.position,new Vector3(transform.position.x,hitPoint.y,hitPoint.z),Time.deltaTime*3f); } } }
Автор - ilyakos Дата добавления - 17 Мар 2014 в 12:13