Lekce 11 - Unity (C#) Android: Oprava sekání, naklánění
V minulé lekci, Unity (C#) Android: Start, Skóre, PlayerPrefs, jsem se zabýval lehkou optimalizací, přičítáním skóre a zastavením hráče na začátku.
Video
Úprava Player Move Scriptu
Do tohoto skriptu přibyla rotace hráče.
using UnityEngine; using System.Collections; public class PlayerMoveScript : MonoBehaviour { float flapAmount = 10; public float speed = 150; bool android; // Use this for initialization void Start() { if (Application.platform == RuntimePlatform.Android) android = true; else android = false; } // Update is called once per frame void Update () { if(Input.GetKeyDown(KeyCode.Escape)) { Application.LoadLevel(0); } Vector3 vel = rigidbody2D.velocity; if (!android) { if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { vel = Flap(vel); } } else { if (Input.touches.Length > 0) { vel = Flap(vel); } } vel.x = speed * Time.deltaTime; rigidbody2D.velocity = vel; RotateMe(vel.y); } void RotateMe(float y) { // -20, 10 // -70, 0 // 0 -70 if(y >= 0) { transform.rotation = Quaternion.Euler(0, 0, 0); } else { float angle = Mathf.Lerp(0, -70, -y); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, angle), 0.05f); } } Vector3 Flap(Vector3 v) { v.y = flapAmount; return v; } }
Vyřešení sekání, úprava CameraFollowPlayer
using UnityEngine; using System.Collections; public class CameraFollowPlayer : MonoBehaviour { public Transform observingObject; public bool withOffset; public int offset; void Update() { if (observingObject == null) return; Vector3 pos = transform.position; Vector3 newPos = observingObject.position; if (withOffset) newPos.x += offset; newPos.z = pos.z; newPos.y = pos.y; transform.position = Vector3.Lerp(transform.position, newPos, 1f); } }
Jak hra vypadá teď?
Problémy?
Pokud máte nějaké otázky, neváhejte se zeptat v komentářích, nebo mi napsat do zpráv.
V příští lekci, Unity (C#) Android: Healthbar 1, naprogramujeme základní healthbar s textem.