2007年12月21日 星期五

啥SL—【Event—Touch】

Touch
當你一直對著一物件點選時就會啟動Touch Event

  Tocuh的Event總共有三個:

  Touch的意思就是玩家用游標點選物件,而不是碰撞物件。然而,這三個Event有什麼差別呢?基本上,如果你習慣對一物件右鍵,利用PieMenu上的Touch點選物件,這三種Event是不會感覺有差的……但是,如果你習慣是像上圖那樣有出現一隻手時點選物件,那就有差了。


這就是所謂的PieMenu

  基本上Touch的動作分成三個步驟:
  1. 點選開始
  2. 點選中
  3. 點選結束
  這看起來很像廢話,但指的就是上面的三個Event。基本上,你只要將這三種Event寫入,當有人Touch時,每個Event都會被啟動,而且會依照touch_starttouchtouch_end這樣的順序來啟動。

  而什麼叫點選中呢?這裡解釋一下,當使用者用滑鼠左鍵點選(有小手圖示出現的狀態)不放,他就會一直啟動
touch,也就是上面提到的點選中的Event。而這個也就是前面第一段提到,如果你習慣用小手一直點和利用PieMenu上的Touch的差別。只要按著不放,就會先啟動touch_startEvent,再不斷地先啟動touchEvent,最後再啟動touch_endEvent。

  至於上面的參數num_detected指的又是什麼呢?

  那是統記目前Touch人數用的,如果同一時間有兩個人在Touch,那num_detected就會是2,不過這要2的機率其實不大……實用性應該也不是很高。

  雖然我是想過一個用法,就是假若遊戲開發者有怪叔叔特戰隊的加農砲需要五個人一起操作的設定,那我想可以利用Touch,只要有同時五個人Touch加農砲按住不放,就會把加濃砲發射出去……



這讓我想起這段很有趣的影片……
來利用Touch Event製作五人戰隊的武器吧!!


  在這邊寫了一個Touch的程式範例:
default
{
touch_start(integer num)
{
llSay(0,"touch_start");
}

touch(integer total_number)
{
llSay(0,"touch");
llSay(0,(string)total_number);
}

touch_end(integer num)
{
llSay(0,"touch_end");
}
}
  簡單來講,就是當有人Touch時,該物件會先說"touch_start",再說"touch"與目前有幾個人碰,而如果這時你是用滑鼠左鍵按住不放,那他就會一直喊著"touch"以及目前有幾個人碰的數字,這時有別的使用者觸碰,這數字就會加1,而當你不碰時,就會喊"touch_end"

沒有留言: