[回到版面]
回應模式
名 稱
E-mail
標 題
內 文
附加圖檔[] []
刪除用密碼(刪除文章用。英數字8字元以內)
  • 可附加圖檔類型:GIF, JPG, PNG, JPEG,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 2000 KB。當回文時E-mail填入sage為不推文功能
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 程式碼可使用 [code][/code] 以 google-code-prettify 標亮 (程式自動判斷語言類別)

  • 公告、舉報、建議請向DB管理室辦理。
  • 本板討論遊戲製作為主,改造方面也可討論,但如果牽涉到版權,請自重。
  • 3D建模請至3D板, 3D遊戲製作(Ex.怎麼用DirectX跑3D?)則可在這討論。
  • 本板為一般向板面,禁止張貼上車圖。

無標題 名稱: 無名氏 [15/10/23(五)12:01 ID:7HzNFpQk] No.11632 3推 [!] 
島民A夢救命Orz

小魯用改變座標的方式寫了移動

在自己電腦測試都沒問題,build之後也沒問題

但給別人玩的時候角色就是會爆衝,一瞬間就衝出攝影機之外XD..

所以後來另外寫了抓LOG的功能,去抓取玩家每兩秒的變化,

抓取的參數有玩家角色目前座標、按下的按鍵、玩家目前的速度

結果是玩家座標確實有異常移動(起點X是-2.4,按下按鍵之後衝到11)

但玩家目前速度(下面的SpeedNow)卻的的確確是我們設定的值....Orz....完全找不出原因...

以下附上移動相關的部分的代碼QQ

#region 定義玩家能力變數
public float MoveSpeed = 0.05f; //行走速度
public float RunSpeed = 0.08f; //跑步速度
private float SpeedNow; //現在角色速度
private bool Moveable; //現在是否可以移動
private float MoveTimer; //儲存判斷是否變化移動用的時間
public float PressIntervalTime; //兩次按鍵間隔時間
public bool FacingRight = true; //檢查面向
public bool playerGD ; //檢查玩家是否著地
public GameObject PlayergroundCheck; //觸地器
#endregion

void Start ()
{
PlayergroundCheck = GameObject.FindGameObjectWithTag("Player_TriggerCol");
}//遊戲開始時呼叫


void Update ()
{

if (Input.GetKey(KeyCode.RightArrow) && Moveable == true)//右移動
{
transform.position += new Vector3(SpeedNow, 0);
if (FacingRight == false)//轉向判斷
{
SpeedNow = MoveSpeed;
transform.localRotation = new Quaternion(0f, 0f, 0f, 0f);
FacingRight = true;
}
}

if (Input.GetKey(KeyCode.LeftArrow) && Moveable == true)//左移動
{
transform.position -= new Vector3(SpeedNow, 0);
if (FacingRight == true && GetHit == false && beforeTR == false)//轉向判斷,受傷狀態下不能轉向
{
SpeedNow = MoveSpeed;
transform.localRotation = new Quaternion(0f, 180f, 0f, 0f);
FacingRight = false;
}
}

if (Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKeyUp(KeyCode.RightArrow)) //放開按鍵結束移動,並記錄放開按鍵時間(判定跑步用)
{
SpeedNow = MoveSpeed;
MoveTimer = Time.time;
}

if (Input.GetKeyDown(KeyCode.RightArrow) && playerGD || Input.GetKeyDown(KeyCode.LeftArrow) && playerGD) // 判斷是否跑步
{
if (Time.time - MoveTimer < PressIntervalTime)
{
SpeedNow = RunSpeed;
}
else
{
SpeedNow = MoveSpeed;
}
}

}//每格呼叫

感謝看到這裡的你Orz
無名氏: (*゚ー゚)+= new Vector3(SpeedNow, 0); 只有xy沒有z (GLvrbUUQ 15/10/23 12:33)
無名氏: (*゚ー゚)另外用Time.deltaTime吧 不然speed還要設定到小數兩位 (GLvrbUUQ 15/10/23 12:34)
無名氏: 檢查看看fps有無差很大吧,不然可以改用補間型處理:兩次Updata間的間隔秒數*每秒移動速度 (RJ3mUDCw 15/10/23 16:45)
無標題 名稱: 無名氏 [15/10/23(五)22:56 ID:Thuu/NFA] No.11634 1推 [!]  
RJ3mUDCw真的是一語道破!!!!終於修好了!!!

在這邊也很感謝GLvrbUUQ的回應QQ
但Vector3如果沒輸入Z值的話是只變動x跟y參數,然後小魯忘了註明這是2D平台Orz....不好意思
另外用Time.deltaTime定義speed這邊會參考看看的QQ
無名氏: Time.deltaTime就是每一frame update的間隔時間 (GLvrbUUQ 15/10/23 23:06)

【刪除文章】[]
刪除用密碼:

第一頁[0] 最後一頁