Skip to content

Maincharactercontroller.cs

NDark edited this page Feb 15, 2013 · 1 revision

{{}}

主角控制

參考script

  1. MainCharacterController

說明

  1. 檢查加減速,左右轉,武器發射
  2. 檢查滾輪切換,滑鼠自動移動
  3. 使用逼逼聲 Common/Audio/WeaponFailBeep ,作為武器發射失敗的警告。
  4. 控制控制面板
    m_ControlPanelsUnActive
    m_ControlPanelsActive
  5. SetClickOnNoMoveFuncThisFrame()
    set m_ClickOnNoMoveFuncThisFrame, 設定為true時,有一段時間不會接受其他點選訊號
  6. 支援系統紀錄
    m_LastUpDown
    m_LastLeftRight

初始化

  1. 檢查是否是自動播放
  2. 讀取 武器發射失敗音訊
  3. 初始化控制面板的物件
  4. 呼叫 CheckControlPanelsUnActive() 檢查控制面板是否要啟動

Update()

  1. 檢查單位是否存活
  2. 呼叫 CheckSpeed() 檢查加減速
  3. 呼叫 CheckTurn() 檢查左右轉
  4. CheckWeapon1() 檢查武器1
  5. CheckWeapon2() 檢查武器2
  6. CheckTrackorBeam3() 檢查功能3
  7. CheckMouseScrollWheel() 檢查滾輪切換
  8. CheckClickToMove() 檢查滑鼠自動移動

CheckSpeed() 船隻的加減速

  1. 使用上下控制,檢查加減速按鈕 CheckSpeed()
  2. 函式 ConfirmTutorialSpeed() 中,呼叫教學事件 TutorialEvent 來關閉加減速教學
  3. 取得 船隻資訊 脈衝速度比例 的標準資料
  4. 依照FPS計算 目前的脈衝速度比例

CheckTurn() 船隻的轉向

  1. 取得控制左右轉的按鈕 檢查轉向 CheckTurn()
  2. 在函式 ConfirmTutorialTurn() 中,呼叫教學事件 TutorialEvent 來關閉轉向教學
  3. 如果有啟動自動駕駛(滑鼠點選移動),則不因為沒按鈕而停止轉向,如有按鈕則停止自動駕駛
  4. 取得 船隻資訊 轉向速度比例
  5. 依照FPS計算 轉向速度比例的調整值

發射武器1

  1. 檢查武器1的按鈕 CheckWeapon1()
  2. 在函式 ConfirmTutorialPhaser() 中,呼叫教學事件 TutorialEvent 來關閉武器1教學
  3. 單擊 發射武器 FireWeapon1()
  4. 呼叫 FireWeaponByKeyword() 傳入關鍵字 “Weapon_Phaser”
  5. 在函式 RetrieveSelectionInfo() 中,取得瞄準系統 UnitSelectionSystem 取得瞄準目標船艦名稱
  6. 取得武器系統 UnitWeaponSystem
    1. 在函式 TryFireWeapon() 中,呼叫武器系統 依照關鍵字 取得 可以發射的武器部件
    2. 在函式 TryFireWeapon() 中,呼叫武器系統 傳入 武器部件名稱 目標船艦名稱 發射武器
    3. 失敗時發出警告聲
    4. 失敗時顯示武器範圍
  7. 如果目前沒有點選物卻按下執行發射武器1,則 呼叫 TrySelectClosestUnit() 自動選擇最近的單位

發射武器2

同 發射武器1,差別在於關鍵字 Weapon_PhotonTorpedo

CheckTrackorBeam3() 檢查發射牽引光束

同 發射武器1,差別在於關鍵字 TrackorBeam

ActiveTrackorBeam3() 發射牽引光束

  1. 檢查牽引光束是否正開啟,將其關閉
  2. 啟動牽引光束

FireWeaponByKeyword() 依照指定的關鍵字 嘗試發射武器

  1. 如果沒有目標,傳入是否要自動選擇

FireWeaponInMultipleAttackMode() 發射特殊攻擊多重攻擊模式

  1. 依據配對好結果依序發射

TryFireWeaponInMultiAttackMode() 嘗試發動多重攻擊模式

  1. 挑選敵人及武器進行配對

FindMostCloestWeaponComponent() 嘗試找到最接近的武器部件

RetrievePossibleWeaponListInOrder() 取得最有可能的武器清單並排序

RetrievePossibleUnitInOrder() 取得可能的敵人單位並排序

自動選擇最近的單位 TrySelectClosestUnit()

向感測系統 UnitSensorSystem 取得最近的單位
通知瞄準系統 UnitSelectionSystem 點選

檢查是否要依照滑鼠按鈕移動 CheckClickToMove()

Check click left mouse button to move

  1. 必須在 m_ClickOnNoMoveFuncThisFrame 未啟動的情形下(目前沒有其他物件的點選正在觸發) 才會正確觸發
  2. 呼叫 UnitGoToPoint 來設定目標
  3. m_ClickOnNoMoveFuncThisFrame 會在 計時器 m_MouseMoveIsClick 結束時清除

SetClickOnNoMoveFuncThisFrame()

滑鼠點選的阻斷器
set m_ClickOnNoMoveFuncThisFrame, 設定為true時,有一段時間不會接受其他點選訊號

ClickOnUnit() 其他物件被點選,設定瞄準系統或發射武器/功能

Click on unit , call by other unit’s click plane.

  1. Use UnitSelectionSystem to select target.
  2. Fire weapon on select target.
  3. 不能瞄準到自己
  4. 如果功能面板的功能有啟動,則直接發射武器/功能

CheckControlPanelsUnActive() 檢查目前船隻是否應該開啟功能面板

功能面板的功能選項 SelectFunctionMode

public enum SelectFunctionMode
{
	None = 0 ,				// 無功能
	WeaponPhaser ,			// 光炮
	WeaponTorpedo ,			// 光雷
	FunctionTrakorBeam ,	// 牽引光束
}
...
public SelectFunctionMode m_SelectModeNow = SelectFunctionMode.None ;

SpecialModePanel 特殊攻擊模式

public enum SpecialModePanel 
{
	None = 0 ,
	MultiAttack,
}

CancelControlMode() 取消功能

set m_SelectModeNow to SelectFunctionMode.None

SwitchControlMode() 切換功能

  1. Switch control mode to _Mode
  2. 在函式 ConfirmTutorialActiveControlPanel() 中 檢查教學
  3. 顯示功能的武器距離

TrySwitchControlModeByOneStep() 試著切換一格功能

  1. 呼叫 SwitchControlModeByOneStep()
  2. 會檢查是否有此部件

SwitchControlModeByOneStep() 上下切換一格的功能

  1. 會循環

DeactiveControlPanel() 關閉指定的控制面板

ShowControlPanel() 顯示控制面版

通知 ClickOnThisCollider 顯示控制面版

HideAllControlPanel() 除了指定模式之外關閉所有控制面板

ShowControlPanelForaWhile() 顯示控制面版一段時間

檢查滾輪 切換控制面版 CheckMouseScrollWheel()

ShowWeaponRange() 顯示武器範圍

  1. weaponSys.ActiveWeaponRangeObject() 呼叫武器系統顯示武器攻擊範圍
Clone this wiki locally