標籤:
長夜漫漫無心睡眠,敲敲代碼,越敲越來勁! 我發現好多小朋友都在玩熊出沒之xxxx這個遊戲,居然打了一下午都沒玩通第2關,我把測試也叫來陪我一起玩!
結果他也打不通,我再去叫策劃,他也沒打過,我去叫主管,他還是沒打過,我再回去叫測試使用遊戲修改大師,修改寶石買完全部的裝備!結果他還是沒打過!
(這款遊戲,讓我人生都變得沒有了意義!)
人物跟隨手指的移動而移動:
第一種方式: 手指移動了多少,主角就移動多少!(我使用的這種方式,存在問題,手指過快滑動,主角會慢慢跟手指有了距離!)
第二種方式: 手指移動到哪裡,主角就慢慢移動到手指所在的位置!(還沒寫代碼,理論上不會出現第一種問題),建議採用這種方式實現
第一種方式的部分代碼實現:
using UnityEngine;using System.Collections;/// <summary>/// 人物的移動/// </summary>public class PlayerMove : MonoBehaviour{ private bool isMove; private Vector3 recordMouseDownPosition; //記錄按一下滑鼠的位子 public float speed = 1; public UISprite gameBackground; public UI2DSprite player; public UI2DSpriteAnimation playerAnimation; public Sprite playerLeftState; public Sprite playerRightState; private float areaWidth; private float areaHeight; //角色移動的邊界 void Awake() { //擷取到背景Sprite的寬度和高度 areaWidth = gameBackground.drawingDimensions.z - player.drawingDimensions.z; areaHeight = gameBackground.drawingDimensions.w - player.drawingDimensions.w; } //開始移動 public void PlayerStartMove() { isMove = true; recordMouseDownPosition = Input.mousePosition; } //結束移動 public void PlayerEndMove() { isMove = false; } void LateUpdate() { if (isMove) { //滑鼠當前座標-單擊被記錄的座標 Vector3 dir = Input.mousePosition - recordMouseDownPosition; //切換左右人物圖片狀態 if (dir.x > 0) { Debug.Log("切換成左"); playerAnimation.enabled = false; player.nextSprite = playerRightState; } else if (dir.x < 0) { Debug.Log("右轉彎圖片"); playerAnimation.enabled = false; player.nextSprite = playerLeftState; } else if (dir.x == 0) { playerAnimation.enabled = true; } //讓人物跟隨手指的方向移動 this.transform.localPosition = new Vector3( transform.localPosition.x + dir.x * 0.7f, transform.localPosition.y + dir.y * 0.7f, transform.localPosition.z); //防止跑出右邊界 if (transform.localPosition.x > areaWidth && dir.x > 0) { this.transform.localPosition = new Vector3( areaWidth, transform.localPosition.y, transform.localPosition.z); } //防止跑出左邊界 if (transform.localPosition.x < -areaWidth && dir.x < 0) { this.transform.localPosition = new Vector3( -areaWidth, transform.localPosition.y, transform.localPosition.z); } //防止跑出上邊界 if (transform.localPosition.y > areaHeight && dir.y > 0) { this.transform.localPosition = new Vector3( transform.localPosition.x, areaHeight, transform.localPosition.z); } //防止跑出下邊界 if (transform.localPosition.y < -areaHeight && dir.y < 0) { this.transform.localPosition = new Vector3( transform.localPosition.x, -areaHeight, transform.localPosition.z); } recordMouseDownPosition = Input.mousePosition; } }}
Unity 人物跟誰手指的移動(第一種方式)