본문 바로가기

루아(LUA)68

change WASD keys Roblox local contextActionService = game:GetService("ContextActionService") local TapTime = .2 local Tapped = false local enabled = false local function changeWasdKey(enabled) if enabled then contextActionService:BindActionAtPriority("changeWasdKey", function(actionName, inputstate, inputObj) if inputstate == Enum.UserInputState.Begin then if inputObj.KeyCode == Enum.KeyCode.W then print("w") elseif in.. 2022. 3. 20.
AlignPosition Roblox local object = Instance.new("Part", workspace) local target = Instance.new("Part", workspace) local alignPosition = Instance.new("AlignPosition", object) local attach0 = Instance.new("Attachment", object) local attach1 = Instance.new("Attachment", target) alignPosition.Attachment0 = attach0 alignPosition.Attachment1 = attach1 target.Position = Vector3.new(0,20,0) target.Anchored = true https://y.. 2022. 3. 20.
로블록스에서 wait()의 시간 아래 코드로 확인해보니 약 0.03초이다. while true do local clock = os.clock() wait() local time = os.clock() - clock print(string.format("시간: %1.2f", time)) end 2022. 3. 19.
밟으면 색이 바뀌는 파트와 삼항연산_로블록스 https://youtu.be/p_bZtRBoFqM local part = Instance.new("Part") part.BrickColor = BrickColor.Red() part.Position = Vector3.new(0, 0.5, -20) part.Anchored = true part.Parent = workspace local debounce = false local enabled = false part.Touched:Connect(function(hit) if not debounce then debounce = true enabled = not enabled part.BrickColor = enabled and BrickColor.Green() or BrickColor.Red() wait(... 2022. 3. 12.
로블록스 캐릭터 블렌더로 가져오기 캐릭터를 블렌더로 가져오는 동영상입니다. https://youtu.be/jdzTGSJG_XE 2022. 2. 25.
공 생성기 [로블록스 1일 1코딩 #13] https://youtu.be/Dp8QqVcYORs ---[[ local gunsound = Instance.new("Sound", game.Workspace) gunsound.SoundId = "rbxassetid://6295454226" --if not gunsound.IsLoaded then --gunsound.Loaded:wait() --end gunsound.TimePosition = 0.2 --]] wait(2) for i=1, 50 do gunsound:Play() local part = Instance.new("Part") part.Parent = workspace local Pos = workspace.genBall.Position local PosX = Pos.X+math.random(.. 2022. 2. 18.
로블록스의 서비스 로블록스에서 좀 더 복잡한 기능이나 추가적인 이벤트, 메서드를 활용하려면 서비스의 도움을 받을 수 있다. 이런 서비스는 일종의 라이브러리라고 생각하면 된다. If you want to utilize more complex functions, additional events, or methods in Roblox, you can get help from Roblox. You can think of these services as a kind of library. utilize미국∙영국[ˈjuːtəlaɪz] 1.활용[이용]하다 (=make use of) 2022. 2. 14.
순간이동하기 [로블록스 1일 1코딩 #10] local teleportPart = script.Parent local destination = game.Workspace.Destination local function teleport(otherPart) local character = otherPart.Parent local humanoid = character:FindFirstChildOfClass("Humanoid") destination.Anchored = true if humanoid then humanoid.RootPart.Position = Vector3.new(destination.Position.X, destination.Position.Y*2, destination.Position.Z) end end teleportPart.Touc.. 2022. 2. 12.
로블록스 티셔츠 판매 로벅스 벌기 로블록스에 티셔츠를 하나 만들어 올려 보았다. 까페 회원분이 하나 구입해 주셨다. 의류판매를 하려면 10로벅스를 내야 한다. 1로벅스 벌자고 10로벅스 투입한 나 ㅋㅋ 한자 용 용'龍'자 티셔츠. 은근 괜찮은 듯~ 내친김에 하나 더 만들어 본 '호랑이 호虎' 전서체이다. 아직 1로벅스는 지급도 안됐다 ㅋ 혹시 내 블로그에 오시는 님들이 구매하실지 모르니 링크~ 2로벅스. https://www.roblox.com/catalog/8789162302/dragon dragon - Roblox Please enable Javascript to use all the features on this site. www.roblox.com 호랑이 호는 공짜이다. 1로벅스 벌자고 10로벅스 낼 수는 없어서 공짜 https:.. 2022. 2. 11.
중복된 테이블 문자열 이어붙이기 local Scores = {{"수학", "90점"}, {"영어", "80점"},{"국어","50점"}} local Sheet = '' for i,v in pairs(Scores) do Sheet ..= v[1]..': '..v[2]..', ' end print(string.sub(Sheet, 1, #Sheet-2)) -- 수학: 90점, 영어: 80점, 국어: 50점 딕셔너리 형태 local Scores = {['수학'] = 90, ['영어'] = 80, ['국어'] = 50} local Sheet = '' for i,v in pairs(Scores) do Sheet ..= i..': '..v..'점, ' end print(string.sub(Sheet, 1, #Sheet-2)) -- 수학: 90점, .. 2022. 2. 11.
테이블의 요소를 찾거나 요소의 갯수 구하기[로블록스 1일 1코딩 #10] 로블록스에서 테이블의 요소를 찾고자 한다면 table.find()를 사용하면 된다. testTable = {"orange","apple","pear"} local searchFruit = table.find(testTable, "apple") print(searchFruit) -- 2 원하는 요소가 몇개 있는지 구하기 local function getN(someTable, N) local i = 0 for _, v in ipairs(someTable) do if v == N then i = i+1 end end return i end 2022. 2. 9.
블렌더와 로블록스의 스터드 블렌더에서 단위와 로블록스의 스터드 단위 일치시키기. unitscal: 0.01 Length: Centimeters 아래 큐브를 로블록스에서 불러오면 정확히 2스터드의 큐브가 된다. 2022. 1. 29.
모듈스크립트2 [로블록스 1일 1코딩 #9] 1일 1코딩을 천개정도 작성하면 로블록스를 조금 다루게 될까.. Script local dspTxt = require(game.ServerScriptService.mdl_dspTxt) local part1 = dspTxt:new({Model=workspace.Part1, writeTxt = workspace.Part1.SurfaceGui.TextLabel, }) local part2 = workspace.Part2 part1.writeTxt.Text = "HIjk" --part1.Model.SurfaceGui.TextLabel.Text = "welcome" part2.SurfaceGui.TextLabel.Text = "hello" mdl_dspTxt local displayText = { Model = .. 2022. 1. 27.
파트의 면을 쉽게 확인하는 플러그인 [로블록스] 파트의 면을 확인하려면 데칼을 붙여서 확인하는 방법이 유일한 것 같은데 꽤나 귀찮은 작업이다. 면을 쉽게 확인할 때 사용할 수 있는 플러그인이다. 아래 이미지처럼 설정하고 사용하면 된다. 2022. 1. 26.
텍스트 라벨에 여러줄 입력하는 3가지 방법 [로블록스 1일 1코딩 #7] local board = script.Parent board.Text = "환영합니다\n여기는 놀이터입니다." local A = "환영합니다" local B = "여기는 놀이터입니다." board.Text = A.."\n"..B local A = [[환영합니다. 여기는 놀이터입니다. 어서오세요~]] board.Text = A 텍스트 레이블 폰트 크기를 100이상으로 하고 싶다면 https://roblox-jk77.tistory.com/11?category=942425 텍스트 레이블 크기 100이상 텍스트 레이블의 폰트 사이즈가 100이상 되지 않는다. 가끔 글자크기를 100이상 할 필요가 있을 것 같은데.. 이것이 정확한 방법은 아니겠지만 간단히 해결 할 수 있는 방법이라 기록해 둔다. 텍스 roblox.. 2022. 1. 23.
스타터 플레이어 스타터 플레이어는 게임이 시작될 때 플레이어의 기본 설정값을 정할 수 있게 하는 폴더이다. 스타터 플레이어 하위 항목은 스타터 플레이어 스크립트와 스터터 개릭터 스크립트로 나뉜다. 1. 스타터 플레이어 스크립트: 각 플레이어가 게임에 처음 들어왔을 때 딱 한 번만 실행된다. 2. 스타터 캐릭터 스크립트: 플레이어가 생성(spawn)될 때 마다 실행된다. 스타터플레이어의 데이터들은 전부 클라이언트에서 실행된다. 2022. 1. 23.
시간의 흐름에 따라 파트의 메테리얼 속성 바꾸기 [로블록스 1일 1코딩 #6] local timeControl = game.Lighting local timeVal = 12 local brick = script.Parent while true do timeControl.ClockTime = timeVal Wait(2) if timeVal == 25 then timeVal = 0 end if timeVal > 18 then brick.Material = Enum.Material.Neon elseif timeVal < 7 then brick.Material = Enum.Material.Neon else brick.Material = "Plastic" end timeVal += 1 end 2022. 1. 23.
여러개의 똥이 내려온다 [마이크로 스튜디오#6] 10개의 똥이 각각 생성될 때 자기만의 스피드를 가지고 생성된다. downPoop = { xPos=0, ySpeed = 0, yPos = 0, yHeight = screen.height/2, new = function(self,o) o = o or {} setmetatable(o,self) self.__index = self return o end, update = function(self) if self.yHeight-self.yPos > -100 then self.yPos = self.yPos + self.ySpeed print(self.yPos) else self.yHeight = self.yPos+100 self.xPos = math.random()*screen.width/2 -math.rando.. 2022. 1. 21.
여러개의 똥이 내려온다 [마이크로 스튜디오#5] downPoop = { new = function(self,o) o = o or {} setmetatable(o,self) self.__index = self return o end, } init = function() yPos=0 poop={} for i=1,10 do poop[i] = downPoop:new() poop[i].xPos = math.random()*screen.width/2 -math.random()*screen.width/2 print(poop[i].xPos) end end update = function() yPos = yPos+math.random()*3 end draw = function() screen:clear(-1) for i=1,#poop do screen:drawSpri.. 2022. 1. 21.
똥 피하기(Avoiding poop) 게임을 만들어 보자 [마이크로 스튜디오#4] 똥 피하기 게임을 마이크로 스튜디오에서 만들어 보자. 1. 똥 이미지 준비. 코드: init = function() yPos=0 --xPos=math.random()*screen.width/2-math.random()*screen.width/2 poop={} end update = function() yPos = yPos+1 xPos=math.random()*screen.width/2-math.random()*screen.width/2 --if xPos>180 then --print(xPos) --end end draw = function() screen:clear(-1) screen:drawSprite("poop",xPos,100-yPos,15,15) end 2022. 1. 20.
장애물 랜덤으로 나타나게 하기 [마이크로 스튜디오#3] init = function() position = 0 scrW = screen.width/2 blade = {scrW,scrW+100,scrW+200} end update = function() position = position + 2 for i=1, #blade do if blade[i] 2022. 1. 20.
움직이는 바닥위에 장애물 만들고 화면에서 사라지면 나타나게 하기 [마이크로 스튜디오#2] init = function() position = 0 scrW = screen.width/2 blade ={scrW,scrW+100,scrW+200} end update = function() position = position + 1 if blade[1] 2022. 1. 20.
Instance.new, AncestryChanged [1일 1코딩 #3] 다음 스크립트는 서버스크립트서비스에서 작성한다. 새로운 파트를 만들고 p.Parent = game.Workspace로 workspace에 파트를 배치한다. local p = Instance.new("Part", game.Workspace)로도 배치할 수 있으나 그렇게 하는 것보다, 파트의 속성을 변경 후 p.Parent = game.Workspace로 배치하는 것이 더 효율적이다. 아래 코드를 실행하기 위해서는 workspace에 lego라는 개체가 있어야 한다. local p = Instance.new("Part") p.Parent = game.Workspace p.AncestryChanged:Connect(function(child, parent) print(child.Name.." is now a .. 2022. 1. 20.
움직이는 바닥 만들기 [마이크로 스튜디오#1] 위 이미지처럼 움직이는 바닥을 만들어 보자. init = function() position = 0 end update = function() position = position + 1 end draw = function() screen:clear(-10) for i= -10,10 do screen:drawSprite("wall",i*50-position%50,-76,50) end end screen:drawSprite("wall",i*50-position%50,-76,50) 이 부분만 잘 이해해 두면 되겠다. i*50의 50과 position%50의 50, 마지막 스케일 50은 일치해야 한다. 2022. 1. 19.
텍스트 레이블 카운트 다운[1일 1코딩 #1] -- Place this code in a LocalScript within a TextLabel/TextButton local textLabel = script.Parent -- Some colors we'll use with TextColor3 local colorNormal = Color3.new(0, 0, 0) -- black local colorSoon = Color3.new(1, .5, .5) -- red local colorDone = Color3.new(.5, 1, .5) -- green -- Loop infinitely while true do -- Count backwards from 10 to 1 for i = 10, 1, -1 do -- Set the text textLabel.Te.. 2022. 1. 19.
블렌더에서 만든 캐릭터 로블록스로 옮기기 [로블록스 개발일지#3] 블렌더에서 만든 캐릭터를 로블록스에 옮겨 보았다. 글과 사진으로 남기려 했으나 너무 귀찮아서 영상 녹화하여 유튜브에 올렸다. 아래는 블렌더에서 모델링 한 레고모형 병정이다. 로블록스에 삽입 성공. 블렌더에서 만든 캐릭터 로블록스에 임포트하기 https://www.youtube.com/watch?v=mVYht0DihqQ&list=PLJ7nI_PASaVCvIEtaM_LXZ-1rtMMQ0PZO 영상에서 사용한 파일: 2022. 1. 18.
로블록스 캐릭터 만들기 [개발일지#2] 로블록스에서 무엇부터 해볼까 고민하다가 캐릭터를 먼저 만들어 보기로 했다. 전에 블렌더에서 모델링 해두었던 오브젝트들이 조금 있으니 그것먼저 찾아 보는 중. 블렌더 파일을 첨부한다. 적당한 모델을 찾았다. 2022. 1. 18.
로블록스 게임 복사하기 [개발일지#1] 2022년 로블록스에서 간단한 학습용 게임을 만들어 보는 것이 목표입니다. 드디어 로블록스 개발을 시작해 보려고 한다. 1월 1일부터 루아 공부를 시작해 17일 동안 이것저것 예제를 통해 루아를 익혔고, 조금이나마 루아에 대해 이해할 수 있었다. 17일간의 공부 끝에 루아로 한자암기카드를 만들어 보았다. 단순해 보이지만 이번 결과물을 통해 루아의 프로토타입, 다른 프로그래밍 언어에서 클래스라고 부르는 것을 조금이나마 이해했다. 루아로 만든 한자암기카드: http://andameero.com/archives/1438 어문회 준7급 한자암기 | 한자와 손글씨 8 글 공유하기 다른한자카드 노란색 배경 아무곳이나 터치(클릭)하세요. 노란색 화면 안에서는 터치스크롤이 되질 않습니다. andameero.com 루아.. 2022. 1. 17.
마우스호버(mouse_hover)와 프로토타입 feat. 루아(lua) 목적없이 남의 코드를 분석하는 것은 굉장히 지루하게 느껴질 때도 있지만 그래도 성취감은 있는 것 같습니다. 물론 긴 코드는 엄두도 못내지만요.. 100~150줄 정도 되는 코드는 해볼만 하군요~ 어쨌든 마우스를 올렸을 때 색이 바뀌고, 클릭했을 때 텍스트가 바뀌도록 루아로 코딩을 해 보았습니다. 메타테이블을 이용해서 프로토타입(클래스)을 만들었구요, 프로토타입에서 프로토타입 바깥의 함수를 호출하도록 코딩한 것이 중요점입니다. 예제실행: http://lotusjk77.com/wp-content/game/mousehover/index.html mouseHover lotusjk77.com 아래 코드에는 공부를 위해 수정하지 않은 코드가 포함되어 있습니다. gnrRect = {t="btn", x=0,y=0,si.. 2022. 1. 16.
메타테이블 #1 메타테이블을 이용하면 테이블에 테이블을 더하거나, 함수를 서로 비교하거나, 문자열을 호출할 수 있다. 또한 정의되지 않은 연산을 처리할 수 있다. 예를 들어 테이블 a와 테이블 b에 대해 a+b와 같은 표현식을 계산하는 방법을 정의할 수 있다. 루아의 모든 값은 연관된 메타테이블을 가질 수 있다. 모든 테이블과 유저데이터에는 각각 메타테이블이 따로 있다. 그리고 새로운 테이블을 생성하면 항상 메타테이블이 없이 생성된다. getmetatable 명령어로 메타테이블의 유무를 확인할 수 있다. 다음 코드를 보자. 새로 생성한 테이블에는 메타테이블 값이 nil이다. t = {} print(getmetatable(t)) --> nil 이제 메타테이블을 만들고 메타테이블을 설정해 보자. 모든 테이블을 setmeta.. 2022. 1. 15.