반응형

https://cafe.naver.com/handsontechnology

핸즈온 테크롤러지에서 좋은 기회를 제공하여 

로봇팩토리를 체험해 볼 수 있었다.

 

1. 교육 목표 제시

(예시) 다목적 가정용 로봇 개발하기 등

각 레슨별로 로봇의 종류가 다양하고 

로봇 제작을 위한 목표를 제시하고 있어

교육의 방향을 잡을 수 있다.

 

2. 로봇의 종류

로봇의 종류는 레슨별로

다양한 종류의 로봇을 제작하게 된다.

 

이 패키지의 가장 좋은점은

레슨별로

동기유발을 위한

시각적 자료를 제공해준다는 것이다.

 

다양한 자료를 제공해주고 

마지막에는 다양하게 

의견을 주고 받을 수 있는 주제도 제공한다.

 

 로봇의 의미를 정의해주고

매니퓰레이커등 다양한 로봇을 소개해주면서 학습에 대한 정보를 제공해줍니다. 

주제에 대한 정보를 확인 후에 주제와 관련된 내용으로 이야기를 나눠볼 수 있습니다.

 

 

나.  제작할 로봇의 특징

로봇팩토리 패키지의 첫 시간 답게

스파이크 프라임의 구성품인 스마트 허브, 센서, 모터에 대한 

교육자료도 제공 됩니다.

조립 및 프로그램에 사용될 로봇을 소개합니다.

완성된 로봇을 보여주고 

디자인 특징을 살펴보는 활동도 할 수 있습니다.

 

다. 조립 및 프로그래밍

조립

먼저 수업을 위한 로봇 조립을 해야합니다.

조립도는 기본으로 제공됩니다. 

레슨에 따른 주제에 따라

로봇을 조립하게 되는데

보통 기본, 버전과 확장 버전으로

나뉘어 집니다.

 

모든 레슨이 그런 것은 아니지만 

확장버전은 해당 로봇을 작동시키는데

필수적으로 조립해야하는 것은 아닌것 같습니다.

 

 

 

스파이키도 로봇팔을 만들지만

로봇팔은 좀 더 로봇스럽게 보이는 역할을 할 뿐 

팔이 모터와 기어로 움직이거나 하지는 않고

수동으로 조절하여 보이는 각도를 조절할 수 있습니다.

 

만약 수업을 하다가 확장버전을 만들때 부품이

없더라도 수업을 진행할 수 있으므로 

참고하세요 ~ 

 

 

 

조립을 한 후에는 아래와 같은 과제가 주어지는데

사용한 부품을 

로봇의 정확한 위치에 드래그하면서

로봇 디자인에 대해 

다시 한 번 확인할 수 있습니다.

 

 

 

 

 

프로그래밍

먼저 동영상으로 과제가 제시된다.

글로만 과제가 제시되지 않고

실행했을 때 모습을 보여 주기 때문에 

구체적으로 어떤 기능을 만들어야하는지

확인할 수 있다.

 

 

 

 

스파이크 프라임 앱 소개

첫 수업에 스파이크 앱에 생소한 학생들에게 필요한 자료가 제공된다.

 

 

 

 

그리고 이번 프로젝트에 필요한 블록이나 앱의 기능을 설명한다. 

첫 수업답게 스파이크 프라임을 앱과 연결하는 것 부터 시작한다. 

 

이와 같이 모든 레슨에

학생들에게 지도해야할  

스파이크 앱 사용법과

프로그래밍 개념

과제를 적재적소에서

제공하는것이 장점이다.

 

과제는

문제 상황이 동영상과 글로 제시되고 

 

문제상황을 해결하기 위한 

알고리즘을

생각해볼 수 있는 시간도 있다.

 

 

 

완전하게 제시되는데 

점차 아이들이

익숙해지만 

이 알고리즘도

스스로 생각해보는 시간을 가지면 

 교육효과가 더욱 높아질 수 있을 것이다.

 

코드도 예시로 제공되고 있어 

수업 준비에 편리함을 더해준다.

 

 

 

 

 

그리고 과제에 필요한

프로그래밍 블록에 대해서 

설명하고 있어 문제를 해결하면서

해당 블록의 기능이나

프로그래밍 개념을 

좀 더 깊게 이해할 수 있게 도움을 준다.

 

 

<활용방안>

 

1. 제시된 알고리즘으로 파이썬 프로그래밍으로 만들어보기 

 

from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair
from spike.control import wait_for_seconds, wait_until, Timer
from math import *
from spike.operator import less_than
 
  
motorFE = MotorPair('F','E')
distance = DistanceSensor('D')
motorFE.set_default_speed(100)
 
while True:
    dist_cm = distance.get_distance_cm() # 거리가 측정되지 않으면 None, 측정되면 소수점으로 나타남 
 
    if dist_cm == None: # wait_untill() 가 None 값으로 비교를 할 수 없음, 거리 센서 값이 None 일때 최대 거리인 200cm로 설정
        dist_cm = 200
    else: # 거리 센서 값이 None이 아닐 때
        motorFE.stop()
        wait_until(distance.get_distance_cm, less_than, 30) 
        motorFE.move(1, unit='rotations', steering = -100 )
        motorFE.move(3, unit='rotations', steering = 0 )

 

from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair
from spike.control import wait_for_seconds, wait_until, Timer
from math import *
from spike.operator import less_than


motorFE = MotorPair('F','E')
distance = DistanceSensor('D')
motorFE.set_default_speed(100)

 

while True:
    dist_cm = distance.get_distance_cm() # 거리가 측정되지 않으면 None, 측정되면 소수점으로 나타남

    if dist_cm == None: # None 이면 다시 측정하도록 함
        continue
    else: # None이 아니면 밑에 코드 실행
        pass

    if dist_cm < 30:
    
        motorFE.move(1, unit='rotations' )
        motorFE.move(-1, unit='rotations')
    else:
        motorFE.stop()

 

2. 센서를 더 추가하여 다양한 기능 만들기 

mobile arm으로 소개되어 있는 

매니퓰레이터에

(거리센서 C포트, 컬러센서 F포트

힘센서 2를 각각 F, E 포트에 연결)

 

거리센서, 컬러센서, 힘센서를

이용하여 라인트레이싱, 거리에 따른 다양한 기능 구현,

힘센서를 이용한 매니퓰레이터 조종 등도 만들어 볼 수 있다.

-라인트레이싱-

-자이로센서로 직진-

-힘센서로 매니퓰레이터 조종하기

수업시간이 짧다면 한 가지 로봇으로 

다른 로봇의 기능을 실행해볼 수도 있다.

(특수한 형태의 엠뷸런스와 같은 로봇 제외)

 

로봇팩토리의 로봇들과

핸즈온에서 제공하는

인공지능 콘텐츠와 연결해서 

이 보다 더 확장된 활동을 할 수 있으리라 생각한다.

 

 

<총평>

로봇팩토리 패키지를 통해 레고에서 출시하는 제품 뿐만 아니라

교육자료도 판매가 된다는 것을 알게 되었다.

 

주제에 대한 배경 설명,

로봇에 대한 조립도(기본, 확장), 

프로그래밍 개념,

과제 (문제상황 제시 - 알고리즘 만들기 - 프로그래밍) 가 

주제별로 다양하게 제시된다.

 

위와 같이

수업을 구성할 때

필요한 자료를 

주제에 맞게 제공하고 있기 때문에

 

스파이크 프라임에 익숙하지 않거나

수업 구성에 부담이 많은 선생님들께

추천할 수 있는

ALL IN ONE 콘텐츠라는

생각을 하였다.

 

물론 창의성을 발휘하여

조립하는 일은 없지만

SW교육과 로봇에 대해 익히기에

탄탄한 콘텐츠라는 생각이 들었다.

 

그리고 완성된 로봇에

본래 로봇에서 사용되지 않은

센서와 장치를 확장하여 

나만의 로봇기능을 만들면서

창의성을 발휘할 수 있고

 

객체인식 등

인공지능 컨텐츠와 융합하여 

좀 더 깊은 내용도

지도할 수 있는 컨텐츠이다.

반응형
반응형

스폰로케이션

탐색기 - StarterPlayerScripts - Local Script 3개 추가 

DoubleJump, ControlScript, CameraScript

컨트롤 스크립트
local player = game.Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")

local doJump = false
local reviving = false
local characterWalkSpeed = 40

game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false)
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false)
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)

local function jump()
	if player.Character ~= nil then
		if player.Character.Humanoid.WalkSpeed == 0 then
			-- Character is not yet moving, start screen was shown
			doJump = false
			if player.PlayerGui.StartScreen.StartInstructions.Visible == true then
				player.PlayerGui.StartScreen:Destroy()
				player.Character.Humanoid.WalkSpeed = characterWalkSpeed
				game.ReplicatedStorage.RemoteEvents.RunStarting:FireServer()
			end
		else
			player.Character.Humanoid.Jump = true
		end
	end
end

if UserInputService.TouchEnabled then
	UserInputService.ModalEnabled = true
	UserInputService.TouchStarted:connect(function(inputObject, gameProcessedEvent) if gameProcessedEvent == false then doJump = true end end)
	UserInputService.TouchEnded:connect(function() doJump = false end)
else
	ContextActionService:BindAction("Jump", function(action, userInputState, inputObject) doJump = (userInputState == Enum.UserInputState.Begin) end, false, Enum.KeyCode.Space, Enum.KeyCode.ButtonA)
end

game:GetService("RunService").RenderStepped:connect(function()
	if player.Character ~= nil then
		if player.Character:FindFirstChild("Humanoid") then
			if doJump == true then
				jump()
			end
			player.Character.Humanoid:Move(Vector3.new(0,0,-1), false)
		end
	end
end)
카메라 스크립트
local camera = game.Workspace.CurrentCamera
local player = game.Players.LocalPlayer

camera.CameraType = Enum.CameraType.Scriptable

local targetDistance = 30
local cameraDistance = -30
local cameraDirection = Vector3.new(-1,0,0)

local currentTarget = cameraDirection*targetDistance
local currentPosition = cameraDirection*cameraDistance

game:GetService("RunService").RenderStepped:connect(function()
	local character = player.Character
	if character and character:FindFirstChild("Humanoid") and character:FindFirstChild("HumanoidRootPart") then
		local torso = character.HumanoidRootPart
		camera.Focus = torso.CFrame
		if torso:FindFirstChild("FastStart") == nil then
			camera.CoordinateFrame = 	CFrame.new(Vector3.new(torso.Position.X, torso.Position.Y + 10, torso.Position.Z - 20) + currentPosition, 
				Vector3.new(torso.Position.X,  torso.Position.Y, torso.Position.Z - 20) + currentTarget)
		else
			--Lower camera for fast start
			camera.CoordinateFrame = CFrame.new(Vector3.new(torso.Position.X, torso.Position.Y - 15, torso.Position.Z - 20) + currentPosition, 
				Vector3.new(torso.Position.X,  torso.Position.Y - 15, torso.Position.Z - 20) + currentTarget)
		end
	end
end)
보상추가하기

코인 소리 바꾸기

local db = true
script.Parent.Touched:connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid") ~= nil then
		if db == true then
			db = false
			script.Parent.Transparency = 1
			local player = game.Players:GetPlayerFromCharacter(hit.Parent)
			player.leaderstats.Coins.Value = player.leaderstats.Coins.Value + 1
			script.Sound:Play()
			script.Parent.Transparency = 1
			wait(1)
			db = true
			script.Parent.Transparency = 0 
		end
	end	
end)

획득 후 사라지게 만들기 위해서는 

local db = true
script.Parent.Touched:connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid") ~= nil then
		if db == true then
			db = false
			script.Parent.Transparency = 1
			local player = game.Players:GetPlayerFromCharacter(hit.Parent)
			player.leaderstats.Coins.Value = player.leaderstats.Coins.Value + 1
			script.Sound:Play()
			script.Parent.Transparency = 1
			wait(1)
			--db = true
			script.Parent.Transparency = 0 -- 투명 속성 값을 0으로 바꿔준다
		end
	end	
end)
배경넣기

점프 아이템 추가

이단점프 
--여기가 첫번째 줄
local UserInputService = game:GetService("UserInputService") -- 키보드 인식을 위해(13번째 줄)
local localPlayer = game.Players.LocalPlayer -- 플레이어 구해줌
local character -- 캐릭터를 담기위한 변수(28줄)
local humanoid -- 휴머노이드를 담기 위한 변수(29줄)
print("jumpscriptloaded")
local canDoubleJump = false -- 이단점프가능한가?(제어)
local hasDoubleJumped = false -- 이단점프를 했는가?
local oldPower -- 원래점프력담기위한 변수(32줄)
local TIME_BETWEEN_JUMPS = 0.2 -- 점프하고 두번재 할때까지의 시간차
local DOUBLE_JUMP_POWER_MULTIPLIER = 2 -- 두번째 점프할때 원래점프력보다 몇배 더 강하게 하는가?

UserInputService.JumpRequest:connect(function() -- 점프요청을 함수로 받음
	if not character or not humanoid or not character:IsDescendantOf(workspace) or 
		humanoid:GetState() == Enum.HumanoidStateType.Dead then
		--캐릭터가 없거나, 휴머노이드가 없거나, 캐릭터가 workspace에 없거나, 캐릭터가 죽어있으면,
		return -- 함수 취소
	end

	if canDoubleJump and not hasDoubleJumped then -- 이단점프가능한가? 가 참이고, 이단점프했는가? 가 참이 아닌경우,
		hasDoubleJumped = true -- 더블점프한 상태라고 표시해줌
		humanoid.JumpPower = oldPower * DOUBLE_JUMP_POWER_MULTIPLIER -- 캐릭터 휴머노이드에서 점프력 설정해줌
		humanoid:ChangeState(Enum.HumanoidStateType.Jumping) -- 캐릭터 점프
	end
end)

local function characterAdded(newCharacter) --47줄이나 50줄에서 오는 함수
	character = newCharacter -- 캐릭터 구해줌
	humanoid = newCharacter:WaitForChild("Humanoid") -- 캐릭터 휴머노이드 구해줌
	hasDoubleJumped = false  --이단점프했는가? 거짓으로 설정
	canDoubleJump = false -- 이단점프가능한가? 거짓으로 설정
	oldPower = humanoid.JumpPower -- 원래 점프력 저장

	humanoid.StateChanged:connect(function(old, new) -- 휴머노이드 상태가 바뀔 때 함수 발동, 입력변수(전상태, 현재상태)
		if new == Enum.HumanoidStateType.Landed then -- 착지상태인경우
			canDoubleJump = false -- 이단점프가능한가? 거짓으로 설정
			hasDoubleJumped = false --이단점프했는가? 거짓으로 설정
			humanoid.JumpPower = oldPower -- 점프력되돌림(22줄에서 바꿈)
		elseif new == Enum.HumanoidStateType.Freefall then -- 떨어지는 상태인경우
			wait(TIME_BETWEEN_JUMPS) -- 10줄에서 정해준것만큼 기다림
			canDoubleJump = true -- 이단점프가능한가? 참으로 설정
		end
	end)
end

if localPlayer.Character then --캐릭터가 이미 있는 경우
	characterAdded(localPlayer.Character) -- 27줄 함수로 연결
end

localPlayer.CharacterAdded:connect(characterAdded) --캐릭터 스폰된경우 27줄 함수로 연결

 

반응형
반응형

 

Lua는 내부가 C로 작성되어 확장이 가능하고 가벼운 프로그래밍 언어입니다.  Lua는 자동 메모리 관리와

문자열과 동적 사이즈를 가진 다른 데이터를 다루는 좋은 능력을 가지고 있습니다. 

 

다른 언어와 다른 특징을 정리해보면 확장성, 간결함, 효율성, 이동성, 공개되어 있고 무료라는 점입니다.

크기가 작기 때문에 메모리 부족할 수 있는 소형장치에서 실행할 수 있습니다.

 

실습하기 (Online Lua Compiler)

 

https://www.tutorialspoint.com/execute_lua_online.php

 

Online Lua Compiler - Online Lua Editor - Online Lua IDE - Lua Coding Online - Practice Lua Online - Execute Lua Online - Compil

 

www.tutorialspoint.com

 

1. 변수 선언하기 

루아의 변수는 선언 없이 사용할 수 있으며 변수형을 미리 지정해 줄 필요가 없습니다.

그리고 Local 이 붙으면 지역변수

아무것도 붙지 않으면 전역변수입니다.

a = 10 에서 
= 는 수학에서와 달리
오른쪽 값을 왼쪽 변수로 치환하는 기능을 한다.
-- 변수선언 

local a, b

-- 변수 초기화

a = 10 
b = 30 

print("변수 a 의 값 :", a) 
print("변수 b 의 값 :", b) 

-- 변수 값 교환

b, a = a, b 

print("value of a:", a)

print("변수 b의 값 ", b)

f = 70.0/3.0

print("변수 f의 값", f)

 

위의 코드를 실행하고나면 다음과 같은 결과가 나온다.

 

value of a: 10

value of b: 30

value of a: 30

value of b: 10

value of f 23.333333333333

 

Lua에는 가변 데이터 유형이 없지만 변수의 범위에 따라 다음과 같은 세 가지 유형이 있습니다. 

■ 전역변수: 명시적으로 지정하지 않는 한 모든 변수는 전역으로 간주됩니다. 
■ 로컬변수: 유형이 변수에 대해 로컬로 지정되면 그 범위는 범위 내의 기능으로 제한됩니다.
■ 테이블 필드: 함수와 0을 제외한 모든 것을 담을 수 있는 특별한 유형의 변수입니다. 

 

2. 자료형의 종류
종류 의미
nill 아무런 데이터도 가지지 않는 데이터

알 수 없는 값

정상적인 값을 가지고 있지 않음을 의미

변수 사용후 삭제할때 사용하기도 함
boolean 참, 거짓 / true, false 두 가지 값을 가짐

조건을 나타낼 때 사용

 false와 nil값 이외의 값은 모두 true로 인정
(0도 true로 인정)
number 숫자

정수, 소수 구분 없이 모두 숫자 개념

모두 double로 처리
string 문자열

큰 따옴표 작은 따옴표 둘 다 사용할 수 있음
('Hello'  "Hello")
function 함수

루아에선 함수도 변수
 

 

--type( ) 함수를 가지고 자료형의 종류를 알 수 있다

print(type("What is my type")) --> string

t=10

print(type(5.8*t)) --> number

print(type(true)) --> boolean

print(type(print)) --> function

print(type(type)) --> function

print(type(nil)) --> nil

print(type(type(ABC))) --> string

 

 

3. 산술 연산자 
연산자 정의 예시 (A = 10, B = 20)
+ 더하기 A + B 의 결과 30 
- 빼기 A - B 의 결과 -10
* 곱하기 A * B 의 결과 200
/ 나누기 B / A 의 결과 2
% 나머지 B % A 의 결과 0
^ 지수연산자 A^2 의 결과 100
- 부정 -A 의 결과 -10
a = 21

b = 10

c = a + b
print("Line 1 - Value of c is ", c )

c = a - b
print("Line 2 - Value of c is ", c )

c = a * b
print("Line 3 - Value of c is ", c )

c = a / b
print("Line 4 - Value of c is ", c )

c = a % b
print("Line 5 - Value of c is ", c )

c = a^2
print("Line 6 - Value of c is ", c )

c = -a
print("Line 7 - Value of c is ", c )

 

위의 코드를 실행하고나면 다음과 같은 결과가 나온다.

 

Line 1 - Value of c is 31

Line 2 - Value of c is 11

Line 3 - Value of c is 210

Line 4 - Value of c is 2.1

Line 5 - Value of c is 1

Line 6 - Value of c is 441

Line 7 - Value of c is -21

 

 

4. 상대 연산자 
연산자 정의 예시 (A = 10, B = 20)
== 두 값의 같이 같은지 확인 (A == B) 는 거짓
~= 두 값의 같이 다른지 확인 (A ~= B) 는 참
> 왼쪽의 값이 더 큰지 확인 (A > B) 는 거짓
< 오른쪽 값이 더 큰지 확인 (A < B) 는 참
>= 왼쪽의 값이 더 크거나 같은지 확인 (A >= B) 는 거짓
<= 오른쪽의 값이 더 크거나 같은지 확인 (A <= B) 는 참
a = 21
b = 10

if( a == b )
then
 print("Line 1 - a is equal to b" )
else
 print("Line 1 - a is not equal to b" )
end

if( a ~= b )
then
 print("Line 2 - a is not equal to b" )
else
 print("Line 2 - a is equal to b" )
end

if ( a < b )
then
 print("Line 3 - a is less than b" )
else
 print("Line 3 - a is not less than b" )
end

if ( a > b )
then
 print("Line 4 - a is greater than b" )
else
 print("Line 5 - a is not greater than b" )
end

-- Lets change value of a and b
a = 5
b = 20

if ( a <= b )
then
 print("Line 5 - a is either less than or equal to b" )
end

if ( b >= a )
then
 print("Line 6 - b is either greater than or equal to b" )
end

 

위의 코드를 실행하고나면 다음과 같은 결과가 나온다.

 

Line 1 - a is not equal to b

Line 2 - a is not equal to b

Line 3 - a is not less than b

Line 4 - a is greater than b

Line 5 - a is either less than or equal to b

Line 6 - b is either greater than or equal to b

 

 

5. 논리 연산자

 

논리에 대한 연산자로 옳은 것과 옳은 것을 and 연산하면 옳은 것, 옳은 것을 not연산하면 옳지 않은 것

연산자 정의 예시(A true, B false)
and 두 피연산자가 모두 거짓이 아닌 경우
true 참
(A and B) 는 거짓
or 두 피연산자 중 어느 하나가 참이면
true 참
(A or B) 는 참
not 피연산자의 논리값을 뒤집음
not true -> false
not false -> true
!(A and B) 는 참
a = 5
b = 20

if ( a and b )
then
 print("Line 1 - Condition is true" )
end

if ( a or b )
then
 print("Line 2 - Condition is true" )
end

--lets change the value ofa and b

a = 0
b = 10

if ( a and b )
then
 print("Line 3 - Condition is true" )
else
 print("Line 3 - Condition is not true" )
end

if ( not( a and b) )
then
 print("Line 4 - Condition is true" )
else
 print("Line 3 - Condition is not true" )
end

 

위의 코드를 실행하고나면 다음과 같은 결과가 나온다.

 

Line 1 - Condition is true

Line 2 - Condition is true

Line 3 - Condition is true

Line 3 - Condition is not true

 

6. 기타연산자 

연산자 정의 예시
.. 문자열을 합치는 기능 > a = "abc"
> b = "def"
> c = a..b
> print(c)

abcdef
# 배열의 길이 반환 > a = "abc"
> b = "def"
> c = a..b
> print(#c)

6
반응형
반응형

 

변수는 프로그래밍을 할 때 컴퓨터 메모리(Memory)에 여러 데이터를 저장해 놓는 공간입니다. 보통 바구니와 상자 그릇으로 비유하곤 합니다. 저장하는 데이터의 종류에는 숫자형(Number), 문자형(String), 논리형(Boolean)이 있습니다.

 

▶ 변수 만들기

 

변수는 아래와 같이 (변수명) = (들어갈 데이터) 의 형식으로 만들수 있습니다. 오른쪽의 (들어갈 데이터)가 왼쪽 (변수명)의 이름을 가진 그릇에 담긴다고 생각하면 이해하기 쉬울 것입니다.

txt = "Hello World!" 
number = 1234
isActive = true

txt 변수에는 문자형 데이터 "Hello World!"가 저장되며 시작과 끝을 큰따옴표(" ")로 감싸줘야합니다. number 변수에는 숫자형 데이터 1234가 저장되며 isActive에는 논리형 데이터 True가 저장됩니다.  

 

이러한 변수는 코드 전체에서 사용이 가능한 전역 변수(Global Variable)와 일정 스크립트와 같은 함수에서만 사용이 가능한 지역 변수(Local Variable)로 나눌 수 있습니다.  전역변수와 지역변수에 자세한 설명은 포스팅을 진행하면서 좀 더 자세히 설명하겠습니다. 

 

 예약어

아래의 키워드들은 이미 프로그래밍할 때 사용하기 위해 미리 예약되어있기 때문에 변수, 상수, 등 여타 식별자의 이름으로 사용할 수 없습니다.

true false and or local
if else elseif for end
nil not function repeat while
local in then do return
until        

 

 

 스크립트 작성하기

[모델] 탭을 클릭하고 오른쪽 끝에 있는 Script아이콘을 클릭한다. 그 후 나타나는 Script 창에 아래와 같이 작성해본다.

txt = "Hello World!" 
number = 1234
isActive = true

print(txt)
print(number)
print(isActive)

 변수 출력하기

[스크립트 메뉴] 탭의 플레이를 클릭하여 실행할 수 있다. 플레이 버튼의 아래쪽 화살표를 눌러보면 플레이(F5) / 실행(F8)이 있다. 단순히 스크립트를 실행 할 때에는 실행 (F8)로 플레이하는것을 추천한다. 

 

 결과확인하기

[보기]탭에서 출력 창이 켜져있는지 확인해보고 켜져있지 않다면 켜준다.

실행(F8)을 눌러 실행해보면 출력창에 우리가 작성한 스크립트가 출력되는 것을 확인할 수 있다.

2021.09.03 - [분류 전체보기] - [Roblox Studio] 로블록스 스튜디오 - 설치 및 기본

 

 

 

[Roblox Studio] 로블록스 스튜디오 - 설치 및 기본

로블록스(Roblox)는 자체 게임엔진인 로블록스 스튜디오를 통해 스스로 게임을 만들거나 다른 사람이 만든 게임을 즐길 수 있다. 즉 누구나 게임을 만들고 즐길 수 있다. 로블록스에는 사용자들이

betterthan2020.tistory.com

 

반응형
반응형

로블록스(Roblox)는 자체 게임엔진인 로블록스 스튜디오를 통해

스스로 게임을 만들거나 다른 사람이 만든 게임을 즐길 수 있다. 

 

 

 

즉 누구나 게임을 만들고 즐길 수 있다. 

로블록스에는 사용자들이 만든 다양한 장르의 게임이 있는데

인기있는 게임은 1000만명의 플레이어를 보유하고 있다.

 

 

 

Roblox Studio

 

 

Create - Roblox

Create anything you can imagine with Roblox's free and immersive creation engine. Start creating experiences today!

www.roblox.com

 

 

 

로블록스 스튜디오는  

개발 프로그래밍 언어로 루아(Lua) 5.1.4 를 지원한다.

루아는 작고 가벼운 스크립팅 언어이지만 확장성이 뛰어난 언어로 많은 사랑을 받고 있다.

 

 

 

 

 

 

 

 

한창 게임을 즐기고 관심이 많은 학생들에게

게임을 즐기기만 하는게 아니라 직접 제작해보면서

게임제작자로서의 진로 탐색도 해볼 수 있다.

 

기본적인 설치 방법 포스팅을 시작으로 로블록스 기본 사용법과 Lua 언어를 함께 배워보도록 하겠다. 

 

▶ 다운로드 

[만들기 Create]  탭을 클릭하면 다음과 같은 화면이 나타난다. 가운데 [Studio 다운로드]를 클릭하면 사용하는 운영체제에 맞는 로블록스 스튜디오가 설치된다. 

로블록스 스튜디오 설치파일을 다운로드 후 설치 및 실행하면 로그인 창이 나타난다.

로그인 화면 

▶ Templet  템플릿

[New +  → All Templets]  탭을 클릭하면 다음과 같은 화면이 나타난다.  다양한 기본 템플릿을 선택할 수 있는데 두번째  [Classic Baseplate ]를 클릭해보자.

▶ 기본 메뉴

첫 화면은 기본 메뉴  [HOME, MODEL, TEST, VIEW, PLUGINS]    [HOME] 화면이  나타난다. 

 

▶ VIEW 

[VIEW] 탭을 선택해서 

Explorer, Properties, Output, Command Bar 를 눌러서 창을 활성화 해준다.

 

 

 

 

 

 

▶ MODEL 

[MODEL] 탭을 선택 후 스크립트 아이콘을 눌러 

스크립트 창을 활성화 해준다. 

스크립트 창을 살펴보면 Hello World 가 기본적으로 입력되어 있다. 

 

 

print("Hello World")

 

 

Classic Baseplate , Script 를 클릭하면서 게임화면과 스크립트 화면을 전환할 수 있다. 

 

▶ SCRIPT MENU - RUN

[SCRIPT MENU] 탭을 선택 후 RUN 아이콘을 눌러 스크립트를 실행할 수 있다.

[Play F5] 와  [Run F8] 을 클릭하여 스크립트를 실행할 수 있는데 [Play F5] 는 게임이 실행되며 [Run F8]은 스크립트가 실행된다. 스크립트의 실행결과는 Output 창에서 확인 할 수 있다.

Hello world!

다음 시간부터는 본격적으로 로블록스 스튜디오의 사용법과  Lua 언어 문법을 본격적으로 배워보도록 하겠다. 

 

 

 

 

 

반응형

+ Recent posts