狗狗曆險記製作過程(第一天控制3d模型移動),曆險記3d
心血來潮,準備寫個小遊戲來玩哈,
第一天花了大約20分鐘,做了下面這個效果
訪問網站可直接運行 http://www.feekood.com/?path=:/tiantian/KeyMove/MoveDog.ais
按上下左右可以控制狗狗移動(鏡頭跟隨狗狗)
註冊www.wooyoogame.com的賬戶,然後進http://www.wooyoogame.com/resource/5373使用狗狗的模型資源了
clear();LoadImage("floorImg",":/Samples/Images/floor.png");//讀取平台內建圖片資源CreateMipmap("floorImg",16);//建立mipmap圖片Create({type:"box",width:100,height:0.01,length:100,texture:"floorImg",IsAutoTexcoord:true,SimplerState:"wrap"});//建立一個地面mesh=IncludeAisx(":/Wooyoo/window7/PUG.aisx");//讀取wooyoo平台狗狗的模型資源//狗狗動作支援有//"RUN,STAND,STAND1,STAND2,STAND3,WALK,STAND4,ATTACKUNARMED,COMBATWOUND,DEATH,"//建立一個固定視角的網路攝影機SetCamera(camera={ position:{0,5,-5}, target:{0,0,0}, up:{0,0,1}, AllowVRotation:false; //關閉滑鼠橫向旋轉 AllowHRotation:false; //關閉滑鼠豎向旋轉 AllowZoom: false; //關閉滑鼠中間縮放});// 設定狗狗的配置資訊myDog={ Action:"stand"; Rotation:0; X:0; Y:0; Z:0; //狗狗的x座標變化則鏡頭改變(鏡頭跟蹤狗狗) X:-> { camera.position={owner.x,5,owner.z-5}; camera.target={owner.x,0,owner.z}; }; //狗狗的z座標變化則鏡頭改變(鏡頭跟蹤狗狗) Z:-> { camera.position={owner.x,5,owner.z-5}; camera.target={owner.x,0,owner.z}; }; doing:"stand";//自訂屬性,狗狗動作 moveSpeed:0;//自訂屬性,狗狗動作 rotateAnim:0;//自訂屬性,狗狗旋轉角度目標 lastRotateAnim:0;//自訂屬性,狗狗上次一儲存的旋轉角度 //旋轉角度目標變化,則動態去改變狗狗模型的顯示角度 rotateAnim:-> { owner.rotateSin=sign(owner.lastRotateAnim-owner.rotateAnim); owner.rotateOff=abs(owner.lastRotateAnim-owner.rotateAnim); case(owner.rotateOff<=180, { owner.Rotation<:{owner.lastRotateAnim,owner.rotateAnim,300}; }, { owner.Rotation<:{owner.lastRotateAnim, owner.lastRotateAnim+owner.rotateSin*(owner.rotateOff-180), ,300}; }); owner.lastRotateAnim=owner.rotateAnim; }; //每一幀更新的內建屬性,按照doing屬性的變化來控制狗狗的模型骨骼動畫 IsUpdated:=> { owner.moveSpeed=Sys().UsedTime/1000; case(owner.doing=="stand", { owner.Action="stand"; },owner.doing=="GoUp", { owner.Action="walk"; owner.rotateAnim=0; owner.Z+=owner.moveSpeed; },owner.doing=="GoDown", { owner.Action="walk"; owner.rotateAnim=180; owner.Z-=owner.moveSpeed; },owner.doing=="GoLeft", { owner.Action="walk"; owner.rotateAnim=90; owner.X+=owner.moveSpeed; },owner.doing=="GoRight", { owner.Action="walk"; owner.rotateAnim=270; owner.X-=owner.moveSpeed; }); };}::mesh;//建立一個狗狗執行個體Create(myDog);//定義按鍵事件資訊keyInfo={ ID:0;//事件編號[內建屬性] Key:"";//按鍵內容[內建屬性] IsKeyDown:false;//按鍵按下事件[內建事件] IsKeyUp:false;//按鍵彈起事件[內建事件] //定義事件觸發程序,按下按鍵則運行運算式 IsKeyDown:=> { // 按上下左右控制狗狗的動作 case(owner.key=="UP",myDog.doing="GoUp", owner.key=="DOWN",myDog.doing="GoDown", owner.key=="LEFT",myDog.doing="GoLeft", owner.key=="RIGHT",myDog.doing="GoRight"); }; //定義事件觸發程序,彈起按鍵則運行運算式 IsKeyUp:=> { myDog.frame=0; myDog.doing="stand"; };};KeyReceive(keyInfo);//接受按鍵訊息