Saturday, November 17, 2018

Unity Tutorial Sinhala - Unity ගැන සිංහලෙන් ඉගෙනගමු - Scripting - 8

කලින් post එකේදි අපි කතා කරා animation parameters එක්ක වැඩ කරන්නෙ කොහොමද කියල. මගේ කලින් post බලල නැත්නම් අනිවාර්යෙන් ඒව බලල එන්න මොකද අද අපි කරන්නෙ ඉතා වැදගත් පාඩමක් නිසා. මේකෙදි අපට කලින් කරපු කොටස් අනිවාර්යයෙන් ඕන වෙනව.



ඉතින් අද අපි කතා කරන්නෙ Unity Scripting කරන හැටි. හරියටම කිව්වොත් game objects සහ අපි හදන game එකට script හරහා call කරන්න පුලුවන්. මෙතනදි වෙන්නෙ මෙහෙම දෙයක් ඔයාලට මතක ඇති අපි game objects අපේ game එකට add කරා. ඊට පස්සෙ ඒවට animations එකතු කරා. මේ animations වලට animation controller හරහා විවිධ state වලදි හැසිරෙන්න ඕන විදිය animation parameter මගින් වෙනස් වෙන්න ඕන විදිහ ගැන කතා කරා. ඒ උනාට මේව ක්‍රියාත්මක වෙන්න ඕන වෙලාව, ක්‍රියාත්මක වෙන්නෙ මොන inputs දුන්නහමද, ඒව වෙනස් වෙන විදිහ සේරම හසුරවන්නෙ script එක හරහා.

මූලික අවබෝධයක් දෙන්නම් scripting ගැන ප්‍රධාන කොටසක් නිසා. Unity වල scripting වලට default IDE එකක් දෙනව setup එක download කරනකොටම. ඒ Monodevelope IDE එක. භාවිතා කරන language එක C#. මුල්ම කාලෙ Unity version වල Java Script language එක use කරා unity ලට ආවේණික විදියට වෙනස් කම් කරල. ඒත් භාවිතයේ අඩුවීමත් එක්ක මේ language එක game engine එකෙන් ඉවත් කරල තියෙනව.

C# script එකක් add කරගන්නෙ මෙහෙමයි. මුලින්ම මම project panel එකේ scripts කියල folder එකක් හදාගත්ත. ඒක ඇතුලට ගිහින් right click කරල ලැබෙන menu එකේ Create->C# Script තෝරන්න.



ඊට පස්සෙ ලැබෙන  script එක player කියල rename කරගන්න.



මම player කියල මෙතනදි හදුන්වන්නෙ අපේ cube game  object එක. ඒක නිසා මම cube එකට මේ script එක එකතු කරන්න ඕන. ඒ නිසා game window එකේදි cube එක select කරන්න. ඊට පස්සෙ player script එක drag කරල inspector window එක උඩට drop කරන්න.



දැන් අපේ cube එකට player script එක add වෙලා තියෙන්නෙ. දැන් script එක double click කරන්න. එතකොට ඔයාලගෙ monodevelop IDE එක open වේවි. මම මගේ IDE එක VSCode වලට වෙනස් කරගෙන තියෙන්නෙ.(තමන්ට කැමති IDE එකකට හදාගන්න පුලුවන් Edit->Preference->External Tools හරහා).


මෙතනදි ඔයාලට පේනව player class එක MonoBehavior කියන namespace එක ඇතුලෙ තමයි create වෙන්නෙ. (namespace එක කියන්නෙ MonoBehavior Project එකක් කියල හිතන්නකො, ඒ project එක ඇතුලෙ තියෙන class එකක් තමයි player කියල හිතන්න)

මේකෙ start සහ update කියල methods දෙකක් පේනව ඇති. start method එකේදි වෙන්නෙ game එක start වෙනකොට මොනවද වෙන්න ඕන කියල කියන එක. update method එකේදි එන්නෙ game එක play වෙන හැම frame එකකදිම update වෙන්න ඕන දේවල් මොනවද කියල කියන එක.

දැන් මම script එක check කරන්න start method එක ඇතුලෙ print statement ලියනව Debug.Log("Hello world"); කියල. ඊට පස්සෙ script එක save කරගන්න.



දැන් play button එක ඔබන්න. එතකොට console එකේ ඔයාලට පෙනේවි hello world කියල print වෙනව.

හරි. දැන් මම අපි හදන game එකට අදාලව code එක පහල පේන විදියට වෙනස් කරගන්නම්.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
    public float player_speed;
    private Animator anim;
    // Use this for initialization
    void Start () {
        anim = GetComponent<Animator>();
    }
    
    // Update is called once per frame
    void Update () {
        player_speed = Input.GetAxis("Vertical");
        anim.SetFloat("speed",player_speed);
    }


මුලින්ම කියන්නම් code එක ගැන. මුලින්ම private Animator type එකක් අරගෙන anim කියල variable එකකට
declare කරගත්ත. මෙතනදි අපි Inspector එකේ animator එක තමයි අපේ script එකට ගත්තෙ.
ඊට පස්සෙ player_speed කියල float variable එකකුත් declare කරගන්න ඕන.

start method එකේදි GetComponent function එක හරහා අපේ Animator එකට call කරල තියෙනව.
මොකද හැම frame එකේදිම අපි set කරගත්ත speed කියන animation parameter එකට call කරන්න ඕන
SetFloat fucnction එක හරහා.

 player_speed = Input.GetAxis("Vertical"); මේකෙදි කියන්නෙ GetAxis function එකෙන් යන්න ඕන
දිශාව ගන්න එක. Vertivcal කියන්නෙ සිරස් අක්ෂය හරහා unity standard ලබාදෙන keys(ඕනම game එකක)
forward(ඉදිරියට යන්න) w හරි up Arrow එක හරි.

දැන් unity වලට ගිහින් play button එක ඔබල බලන්න. දැන් W key එක press කරන්න එතකොට අපේ
animation එක වැඩ කරනව ඔයාලට පෙනේවි.

ඉතින් අද මම කතා කරේ unity scripting ගැන. මේ ගැන ගොඩක් දේවල් ඔයාලත් හොයල බලන්න.
scripting වලට අදාලව ගොඩක් predefined functions තියෙනව unity වල. ඒව කරල practice වෙන්න. ඔයාලගෙ comments, ප්‍රශ්න තියෙනවනම් පහල comment section එකේ දාන්න. ඔබට ජය!

Monday, November 5, 2018

INFOTEL 2018 - CIS Stall - Sabaragamuwa University of Sri Lanka

INFOTEL exhibition එක ගැන ගොඩක් අය අහල ඇති සමහර නොදන්න අයත් ඇති. මං මේ post එක ලියනකොටත් exibiton එකේ අවසාන දවසත් පහුවෙලා  තියෙනනෙ . මොකද මටත් යන්න උනේ අන්තිම දවසෙ නිසා. ඒ උනාට සෑම අවුරුද්දකට වරක්ම මේ අති දැවන්ත තොරතුරු තාක්ෂණික ප්‍රදර්ශනය පැවත්වෙනව BMICH එකෙදි.මෙවරත් නොවැම්බර් 2 සිට 4 වෙනිදා දක්වා මේ ප්‍රදර්ශනය පැවත්වුනා. ඔයාලට පුලුවන් තොරතුරු තාක්ෂණය පිලිබඳ සෑම දෙයක්ම මේ හරහා දැනගන්න ඉදිරියට එන අලුත් තාක්ෂණයත් එක්කම.



මුලින්ම මම කියන්නම් මොකද්ද මේ INFOTEL කියන්නෙ කියල. මං කලින් කිව්ව වගේ INFOTEL කියන්නෙ වසරේ දැවන්තම තොරතුරු තාක්ෂණික ප්‍රදර්ශනය. මේක සංවිධානය කරන්නෙ FITIS (Federation of Information Technology Industry Sri Lanka) එකෙන්.1992 ඉඳන් මේ ප්‍රදර්ශනය පැවැත්වෙනව. ඒ කියන්නේ මේ 26 වෙනි වරට තමයි මෙවර INFOTEL එක පැවැත්වෙන්නෙ. මේ වසරේ FITIS, INFOTEL 2018 theme එක විදියට තෝරගෙන තියෙන්නෙ "Towards Digital Economy" කියන එක. මෙහි ප්‍රධාන අරමුණ තමයි අනාගත ඩිජිටලීකරණය අලුත් පරපුර සඳහා දායද කිරීම කියල කිව්වොත් මම නිවැරදියි.


ඉතින් මේ ප්‍රදර්ශනයේ මෙවර මම දැක්කෙ දෙයක් තමයි ගොඩක්ම Hardware products වලට වඩා Technology solutions තමයි highlight කරල තිබුනෙ. ඒවගේම IOT, Data science, Gaming, IT සම්බන්ධ නව නිපැයුම් වගේ ගොඩක් දේවල් මේ ප්‍රදර්ශනය හරහා ගේන්න පුලුවන් වෙලා තියෙනව.IT සම්බන්ධ සියලු තොරතුරු දැනගන්නවට අමතරව ඒ වෙලාවෙම අවශ්‍ය products තියෙනවනම් මිලදීගන්නත්, අධ්‍යාපනික වශයෙන් පාසල් යන ලමයින්ට ලබාගන්න ගොඩාක් දැනුම මෙහි අන්තර්ගත වෙලා තියෙනව.



ඉතින් විශ්වවිද්‍යාල මට්ටමෙන් අපේ විශ්වද්‍යාලයටත් හැම වසරකම වගේ මේ වසරෙත් අපට stall එකක් ලැබුන INFOTEL ප්‍රදර්ශනයෙ. මෙතනින් ඉදිරියට මම ඒ ගැන කතා කරන්නම්.


අපේ stall එක ගැන කතා කලොත් stall එක කරන්නෙ සබරගමුව විශ්වවිද්‍යාලයේ Department of Computing & Information Systems එහෙමත් නැත්නම් CIS department එකෙන්. මෙතනදි අපි IT සම්බන්ධ සියලුම ක්ෂේත්‍රයන් ආවරණය වන විදියට IOT things, Robotic Technology, Software Solutions වලට අදාළ ප්‍රදර්ශන භාණ්ඩ ප්‍රදර්ශනය කරල තියෙනව. මේ වසරට අදාළව ප්‍රදර්ශනය කර දේවල් තමයි මම පහලින් විස්තර කරල තියෙන්නෙ.

1. Fully assembled and programmed Drones - Arduino




මෙවර වසර 2 කට අදාලව ඔවුන්ගේ අතින්ම නිර්මාණය කරල programme කරපු Drones එහෙමත් නැත්නම් quad-copters 2ක් ප්‍රදර්ශනය කරන්න අපට පුලුවන් උනා. මේ නිර්මාණ කරල තියෙන්නෙ නයන මධුවන්ත හා ගයාන් චානක කියන සහෝදරයින් දෙදෙනා. මේ දෙකම නිර්මාණය කරල තියෙන්නෙ සහ programme කරල තියෙන්නෙ එයලා විසින්මයි. programme කරල තියෙන්නෙ Arduino platform එක භාවිතා කරල. මේක නිර්මාණය කරන්න Arduino UNO, Bushless motors, propellers, ESC, Transmeter, Receiver, Gyroscope, frame වගේ කොටස් ebay හරහා ගෙන්වල භාවිතා කරල තියෙනව. ඒ වගේම මේ drone දෙකම දැනට videography සහ photography වලට භාවිතා කරල තියෙනව. ප්‍රදර්ශනයට ආව නම් දන්නව ඇති ඔයාලට තනියම drone එකක් මුලසිට හදාගන්නෙ කොහොමද කියල එයාලම එහිදි කියාදුන්න. ඔයාලටත් idea එකක් තියෙනවනම් ඔයාලගෙම කියල drone එකක් හදන්න පහල මම දාන්නම් එයාලගෙ facebook links ඕන වෙලාවක contact කරගන්න පුලුවන්.

2. IOT based Monitering & Smart Analyzing Device for Agriculture 


මේක ගැන කතා කරොත් කෘෂි කර්මන්තයේදි අපට ඕන වෙනව අපේ පැළ වලට කොච්චරක් තෙතමය, උෂ්ණත්වය හා හිරු එලිය අවශ්‍යද කියල නැත්නම් අපට අවශ්‍ය විදියට මේ පැළ වර්ධනය වෙන්නෙ නෑ. ඉතින් ඒකට විසඳුමක් විදියට මේ device එක හදල තියෙනව සුබොධ ජයසිංහ සහෝදරය. දැනට පැළ වල තියෙන ඉහත කියන සාධක ලබාගන්න moisture, soil humidity sensors  භාවිතා කරල තියෙනව එතනින් එන data, NodeMCU එකක් භාවිතා කරල wifi හරහා local server එකකට යවනව ඊට පස්සෙ ඒ data අපට analyze කරල පුලුවන් තව කොච්චර standard වලට වඩා තියෙන්න ඕනද කියල නිගමනය කරල අවශ්‍ය විදියට සාත්තු කරන්න.

3. Smart Locker



මේක device එක lock එකක් විදිහට භාවිතා කරන්න පුලුවන් අපට. අපටම password එකක් set කරන්න, reset කරන්න, enter කරන්න පුලුවන්. මේක හදන්න Arduino UNO board, LCD display, key Pad එකක්  සහ Lipo-Battery එකක් use කරල තියෙනව. Current එක නැතුව උනත් lock එක වැඩ කරන්නෙ මේ battery එක නිසා. Lock එකට servo motors භාවිතා කරල තියෙනව. ඒ වගේම මේකෙ තියෙන වාසියක් තමයි හදිසි power cut එකකදි උනත් Lock එක Unlock නම් lock වෙනව. Security අතින් මේක විශේෂ වෙන්නෙ ඒ නිසයි.

4. CNC Mini Plotter



මේක ගැන කතා කලොත් ඔයාල අහල ඇති ඕන තරම් plotters තියෙනව. ඒත් අතින් ඇන්ද වගේ රූපයක්  ගන්න තියෙනවනම් ඒක වටිනව නේද, සැකිල්ල හදල තියෙන්නෙ පරන DVD Rom එකක් use කරල. ඒකටත් Arduino UNO, DVD ROM motors, motor shield වගේ කොටස් භාවිතා කරල තියෙනව. ආ... රූපෙ ඇන්දෙන්නෙ Bolt-point පෑනකින්. අපි තෝරගත්ත රූපයක් Inkscape වලින් Gcode කරනව ඊට පස්සෙ processing code එකක් හරහා arduino board එකට යනව. ඊට පස්සෙ arduino signal වලට අනුව අපි දුන්න රූපය ඒ විදියටම පෑනෙන් ඇන්දෙනව.


ඉතින් මං මේ කතා කරේ මේ වසරේ අපේ stall එකේ exhibits ගැන ඒ වගේම සෑම අවුරුද්දකම වෙනස්ම විදිහේ  exhibits ගොඩාක් අපි ලඟ තියෙනව ඒ ගැන ඕනම වෙලවක දැනුම ලබාගන්න පුලුවන් අපේ සම්පත් සම්පත් දායකයින්ගෙන්.ලබන වසරෙත් අලුත් exhibits ගොඩක් එක්ක මීට වඩා හොඳ stall එකක් ගේන්න පොරොන්දු වෙන ගමන් ආරාධනා කරනව අපිත් එක්ක එකතු වෙන්න දැනුම බෙදා ගන්න අනිවර්යෙන් ලබන අවුරුද්දෙ INFOTEL බලන්න එන්න. අපේ stall එකටත් එන්න.


පහල තියෙනව ඉහත device වල නිමැයුරුවන්ගෙ facebook links. ඔයාලට ප්‍රශ්න, comments තියෙනවනම් අහන්න. මේ post එක ගැනත් comments තියෙනවනම් පහලින් දාන්න.එහෙනම් ඔබට ජය!

Facebook :- Nayana Madhuwantha
                    Gayan Chanaka
                    Subodha Jayasinghe


Saturday, November 3, 2018

Unity Tutorial Sinhala - Unity ගැන සිංහලෙන් ඉගෙනගමු - Animation Parameters - 7

කලින් post එකේදි අපි කතා කරා කොහොමද අපේ game asset එකකට Animator Controller එකක් එකතු කරගන්නෙ කියල. ඒ post එක ඔයාල තාම බලල නැත්තම් මෙතනින් බලන්න පුලුවන්. අද අපි කතා කරන්නෙ Animator Controller window එකෙදි කොහොමද animation parameters එකතු කරගන්නෙ කියල.



Animation parameter එකක් කියන්නෙ මෙහෙම දෙයක්. හිතන්න අපේ cube එකට ඉස්සරහට යන්න ඕන speed කියන variable (විචල්‍ය) 0 ට වඩා වැඩි වෙනකොට. ආයෙත් නවතින්න ඕන speed එක 0 දි. එහෙමත් නැත්නම් මොකක් හරි animation එකක් play වෙන්න ඕන boolean එකක් true වෙන වෙලාවට. අනිත් වෙලවට(false) animation එක වැඩ කරන්නෙ නැතුව ඉන්න ඕන. මේවගේ වෙලාවට තමයි animation parameters භාවිතා වෙන්නෙ.


මම උඩ රූපෙන් පෙන්නල තියෙන්නෙ උදාහරණයක් මෙතන parameters 4 ක් භාවිතා කරල තියෙනව forward, strafe, fire, die කියල. forward, strafe කියන දෙකම float values. fire කියන්නෙ bool එකක්. bool එකක් දානකොට තමයි checkbox එකක් වටෙන්නෙ. true නම් checkbox එකේ හරියක් වැටෙනව. die කියන්නෙ trigger එකක්. ඒක radio button එකක්.

parameters වර්ග 4 ක් තියෙනව.

  • Int - an integer (whole number)
  • Float - a number with a fractional part
  • Bool - true or false value (represented by a checkbox)
  • Trigger - a boolean parameter that is reset by the controller when consumed by a transition (trigger එක කියන්නෙ අපට අවශ්‍ය controller ද ඉන්නෙ කියල දැනගන්න boolean parameter එකක්)

parameters ගැන ඔයාලට දැන් අවබෝධයක් ඇති. දැන් අපේ game එකට යමු. මම් හිතන් ඉන්නව cube එකේ forward animation එකට speed කියල parameter එකක් දාන්න.

මුලින්ම අපේ animator controller එකේ base layer එක පහත පරිදි හදාගන්න ඕන.


මෙතනදි මම idle සහ forward කියල state 2 ක් හදාගෙන තියෙනව. ඊට පස්සෙ idle එකේ ඉඳල forward එකටත් forward එකේ ඉඳල idle එකටත් transition 2 ක් එකතු කරගෙන තියෙනව. ඊට පස්සෙ idle එක මගේ default state එක කියල තෝරගෙන තියෙනව. මොකද game එක පටන් ගන්නකොට cube එක, එක තැනක තියෙන්න ඕන.(state, transition දාන විදිහ මම කලින් post එකේ කියල තියෙනව) .


දැන් මුලින්ම animator controller window එකේ වම් පැත්තෙ ඉහල කෙලවරේ තියෙන + mark එක click කරන්න.


ලැබෙන menu එකේ float තෝරන්න.


දැන් parameter එකක් දාන්න අපට box එකක් එනව ඒකෙ parameter එක speed කියල වෙනස් කරගන්න.


දැන් අපට idel -> forward යන transition එක select කරගන්න ඕන. ඊට පස්සෙ conditions යටතේ + mark එක ක්ලික් කරගන්න.


රූපෙ විදිහට speed එක 0.1 ට වඩා විශාල නම් කියල අපේ condition වෙනස් කරගන්න. එතකොටනෙ cube එක ඉස්සරහට යන්න ඕන. ඒකට speed, greater, 0.1 කියල conditions හදාගන්න.


ඒ විදිහටම forward ඉඳල idle වෙනකොට අපේ cube එක නවතින්න ඕනනෙ. ඒකට ඒ transition එක select කරල speed, less , 0.1 තෝරන්න.

හරි අපි අද අපේ forward animation එකට conditions දාගත්ත. ඒ විදිහට animation භාවිතා කරන හැම වෙලවෙම අපට conditions දාගන්න වෙනව. ඊළඟ post එකේදි අපි බලමු C# වලින් scripting කරන විදිහ.
ඔයාලගෙ comments, ප්‍රශ්න තියෙනවනම් පහල comment section එකේ දාන්න. ඔබට ජය!

Battle Zone - Legacy Reborn(TRON Game) Game Review & Download setup #free

ඔන්න ඉතින් අදත් ඔයාලත් එක්ක මං එකතුවෙන්නෙ ලංකාවෙ හදපු සුපිරිම ටිකක් වෙනස්ම විදියෙ Unity Game එකක් එක්ක. මේකෙ නම Battle Zone - Legacy ...