2014年12月20日 星期六

14/12/20 Coding

  • 今天成功讓WG-map出現要打倒的怪物
  • 在threex.minecraft下,想要讓player.html有新動作,要加動作要去threex.minecraftplayer.js加
  • 在threex.minecraftplayer.js裡,他要先從THREEx.MinecraftChar()讀人物model,之後再去THREEx.MinecraftCharHeadAnimations(character),把從THREEx.MinecraftChar讀到的model放入THREEx.MinecraftCharHeadAnimations(character)的parameter,也就是character。
  • 要去學習物理碰撞,這樣才能觸發我們的題目,後來參考THREEx - Game Extensions for Three.js之後發現有threex.cannonjs看了它的demo,決定用jeromeetienne/threex.cannonjs · GitHub
  • threex.cannonjs · GitHub的頁面底下也有使用教學
  • 實作於:D:\work\WebGL Learning\threex.cannonjs-master\examples\basic_WG.html
  • 傳統上,我們先設好scene、camera,接著我們要讓我們的3D world導入物理碰撞
  • var worldx = new THREEx.CannonWorld().start();這個用THREEx.CannonWorld().start();所宣告的object,就是我們要拿來進行物理碰撞的世界
  • 接著先參考D:\work\WebGL Learning\threex.cannonjs-master\examples\domino.html,來學習讀取model後如何使用threex.cannonjs來產生物理碰撞
  • 首先我們先生成我們要的model,命名為mesh,紅框、綠框是mesh的內容物,像是形狀、顏色,接著我們把mesh這個model,透過scene.add()加入我們的scene中。
  • 接著,我們宣告一個var body = new THREEx.CannonBody({}),這讓我們可以把mesh加入有物理運動效果的世界中,THREEx.CannonBody({})的parameter要用中括號{}包起來,在{}裡有兩個properties,第一個property,mesh: 拿來放我們要進行物理效果的model,第二個property,mass: 若設為0或小於0的數字,則會固定不動,設為大於零的數字就跟沒設一樣,這個可有可無,通常是拿來設定山、地面這種物體用的。
  • 接著我們繼續著THREEx.CannonBody({})後面加入.addTo(worldx),addTo裡面的parameter會自動被設為當初用THREEx.CannonWorld().start();宣告的object
  • 被加入我們的物理碰撞世界worldx之後,若想要讓我們讓我們的model產生物理效果或是控制它,可以在var body = new THREEx.CannonBody({})之後使用body.body.applyForce()或是參考basic.html的bodyx.body.angularVelocity.set(0,0,20)。
  • 試了一天,雖然在D:\work\WebGL Learning\threex.cannonjs-master\examples\basic_WG.html成功得到物理碰撞的效果,但是後來發現,這不是我要的,這只是畫面上看起來有碰撞,我要的是,一個觸發的效果,當我WG-Map的小人接近地圖中的動物時,能觸發我們的題目
  • 後來繼續查資料看到這demo,可以使用THREEx - Game Extensions for Three.js裡面的jeromeetienne/threex.colliders · GitHub







沒有留言:

張貼留言