Pixi.js: 피벗은 개체 μœ„μΉ˜μ— 영ν–₯μ„μ€λ‹ˆλ‹€.

에 λ§Œλ“  2013λ…„ 07μ›” 06일  Β·  24μ½”λ©˜νŠΈ  Β·  좜처: pixijs/pixi.js

DisplayObject의 ν”Όλ²— 속성과 κ΄€λ ¨ν•˜μ—¬ 질문이 μžˆμŠ΅λ‹ˆλ‹€. 특히 DisplayObjectContainerλ₯Ό 쀑심을 μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 피벗을 μ€‘μ‹¬μ μœΌλ‘œ μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것이 μš”μ†Œμ˜ μœ„μΉ˜μ— 영ν–₯을 λ―ΈμΉ˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μœ„μΉ˜λ₯Ό 0,0 (κΈ°λ³Έκ°’)으둜 μ„€μ •ν•˜λ©΄ pixijsλŠ” μ™Όμͺ½ 상단 λͺ¨μ„œλ¦¬κ°€ μ•„λ‹Œ 쀑심점에 따라 객체λ₯Ό λ°°μΉ˜ν•˜λ €κ³ ν•©λ‹ˆλ‹€. λ”°λΌμ„œ DisplayObjectContainer의 μžμ‹ (λ‚΄ κ²½μš°μ—λŠ” Graphics 클래슀의 μΈμŠ€ν„΄μŠ€)이 뷰포트의 μ™Όμͺ½ 및 μœ„μͺ½ κ°€μž₯μžλ¦¬μ—μ„œ λ²—μ–΄λ‚©λ‹ˆλ‹€.

νšŒμ „ 지점을 μ„€μ •ν•˜λŠ” 방법이 μžˆμ§€λ§Œ μ—¬μ „νžˆ μ™Όμͺ½ 상단 λͺ¨μ„œλ¦¬λ₯Ό κΈ°μ€€μœΌλ‘œ 개체λ₯Ό λ°°μΉ˜ν•©λ‹ˆλ‹€.

πŸ•· Bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

제 μƒκ°μ—λŠ” κ·Έλž˜ν”½ (λ˜λŠ” μ»¨ν…Œμ΄λ„ˆ)을 쀑심점을 μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 κ·Έλž˜ν”½μ΄ 그렀진 쀑심점 μ’Œν‘œλ₯Ό μ €μž₯ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그런 λ‹€μŒ κ·Έλž˜ν”½μ˜ μœ„μΉ˜μ™€ 피벗을 μ€‘μ‹¬μ μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€.
λ‹€μŒμ€ κ·Έ μ˜ˆμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ κ·Έλž˜ν”½ 객체λ₯Ό λ§Œλ“œλŠ” 경우 κ·Έ μœ„μ— κΈ°λ³Έ μš”μ†Œλ₯Ό 그릴 수 μžˆμŠ΅λ‹ˆλ‹€.
var test = new PIXI.Graphics(); test.drawRoundedRect(100, 100, 200, 200,12);
κΈ°λ³Έ μš”μ†ŒλŠ” 항상 Graphics 객체의 μœ„μΉ˜ (기본값은 0)λ₯Ό κΈ°μ€€μœΌλ‘œ κ·Έλ €μ§‘λ‹ˆλ‹€.
λ”°λΌμ„œ κ·Έλž˜ν”½ 객체의 μƒˆ μœ„μΉ˜λ₯Ό 200으둜 μ„€μ •ν•΄μ•Όν•©λ‹ˆλ‹€. 이것이 κΈ°λ³Έ μš”μ†Œμ˜ ν˜„μž¬ 쀑심점이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.
test.position.x = 200; test.position.y = 200;
이제 ν”„λ¦¬λ―Έν‹°λΈŒκ°€ 방금 μ΄λ™ν–ˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 피벗을 λ™μΌν•œ μ’Œν‘œλ‘œ μ„€μ •ν•΄μ•Όν•˜λ©° 그렸던 λ™μΌν•œ μœ„μΉ˜μ— μœ μ§€λ©λ‹ˆλ‹€.
test.pivot.x = 200; test.pivot.y = 200;

pivot 속성은 버그가 μ•„λ‹™λ‹ˆλ‹€. μž‘λ™ 방식과 "객체 μœ„μΉ˜μ— 영ν–₯을 λ―ΈμΉ˜λŠ”"이유λ₯Ό μ΄ν•΄ν•˜λŠ” 것은 μ•½κ°„ ν˜Όλž€ μŠ€λŸ½μŠ΅λ‹ˆλ‹€. κ°œμ²΄λŠ” 항상 μžμ‹ μ˜ μœ„μΉ˜λ₯Ό β€‹β€‹μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λ©° 피벗은 νšŒμ „ν•˜λŠ” μœ„μΉ˜μ—μ„œ μƒˆ 지점을 μ„€μ •ν•˜λŠ” 데 λ„μ›€μ΄λ©λ‹ˆλ‹€.

λͺ¨λ“  24 λŒ“κΈ€

κ·Έλž˜ν”½μ˜ ν”Όλ²—κ³Ό μœ„μΉ˜λ₯Ό μ€‘μ•™μœΌλ‘œ μ„€μ •ν•˜μ—¬μ΄ μž‘μ—…μ„ μˆ˜ν–‰ ν•œ λ‹€μŒμ΄ 지점을 μ€‘μ‹¬μœΌλ‘œ κ·Έλž˜ν”½μ„ κ·Έλ ΈμŠ΅λ‹ˆλ‹€.

http://stackoverflow.com/questions/17505169/pixi-js-pivot-affects-object-position/18007977#18007977 μ½”λ“œ 예제둜 stackoverflow에 λŒ€ν•œ μ§ˆλ¬Έμ— λ‹΅λ³€ν–ˆμŠ΅λ‹ˆλ‹€

@GoodBoyDigital 피벗이 μœ„μΉ˜μ— 영ν–₯을

μ‹€μ œλ‘œ pivot 및 anchor 에 λŒ€ν•΄ ν˜Όλž€ μŠ€λŸ¬μ› μŠ΅λ‹ˆλ‹€. 병합 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

음, pivot 와 anchor λŠ” (κ°œλ…μ μœΌλ‘œ) λ‹€λ¦…λ‹ˆλ‹€. 피벗은 νšŒμ „ 지점에 영ν–₯μ„μ£ΌλŠ” 반면 μ•΅μ»€λŠ” 원점 (μœ„μΉ˜ 지점)μž…λ‹ˆλ‹€. κ·Έλž˜λ„ 피벗이 μ œλŒ€λ‘œ μ‚¬μš©λ˜κ³  μžˆλŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

이것은 같은 점으둜 μ‚¬μš©ν•  μˆ˜μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ λ Œλ”λ§ (css transform-origin, flash 등둝)μ—μ„œ 뢄리 된 것을 λ³Έ 적이 μ—†μŠ΅λ‹ˆλ‹€. 이것이 μ„€λͺ… 된 μ‚¬μš© 사둀가 μžˆμ—ˆμŠ΅λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ λͺ¨λ“  것이 기본적으둜 ν•œ κ°€μ§€λ‘œ μ„€μ •λ˜κ³  μ„€μ •λœ 경우 λ‹€λ₯Έ 것을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

피벗이 점이 μ•„λ‹Œ ν•œ νšŒμ „μ„ ν¬ν•¨ν•˜μ—¬ λͺ¨λ“  곳에 κ³ μ •λ˜λ„λ‘ κΈ°λ³Έ μ„€μ •λ˜μ–΄ 있으면 νšŒμ „μ— μ‚¬μš©ν•©λ‹ˆκΉŒ?

μ—…λ°μ΄νŠΈ : λ˜λŠ” μœ„μ˜ λ°˜λŒ€μ˜ κ²½μš°λ„ μžˆμ§€λ§Œ _anchor = default_ 및 _pivot = rotation_, 더 λ‚˜μ€ 이름 IMO둜 기울고 μžˆμŠ΅λ‹ˆλ‹€.

anchor 및 pivot λŠ” λ Œλ”λ§ μ—”μ§„μ—μ„œ 맀우 μΌλ°˜μ μž…λ‹ˆλ‹€. 쀑심을 μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜κ³  μ‹Άμ§€λ§Œ μœ„μΉ˜κ°€ μ™Όμͺ½ 상단에 μ˜ν•΄ κ²°μ •λ˜λŠ” λ§Žμ€ μ‚¬μš© 사둀가 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ 지원해야 ν• λΏλ§Œ μ•„λ‹ˆλΌ μ˜μ§€ ν•  κ²ƒμž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, μ§€κΈˆμ΄ 문제λ₯Ό 쑰사 μ€‘μž…λ‹ˆλ‹€. μ•½κ°„μ˜ μ„€λͺ…을 μœ„ν•΄ anchor λŠ” μŠ€ν”„λΌμ΄νŠΈμ— νŠΉμ •ν•œ κ²ƒμž…λ‹ˆλ‹€. ν…μŠ€μ²˜λ₯Ό μ •λ ¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. λ‚˜λŠ” κ·Έλ‚  cocos2d둜 물건을 λ§Œλ“€ λ•Œ κΈ°λŠ₯이 맀우 μœ μš©ν•˜λ‹€λŠ” 것을 μ•Œμ•˜μœΌλ―€λ‘œ 정말 그것을 pixi에 μΆ”κ°€ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. pivot λŠ” λͺ¨λ“  ν‘œμ‹œ 객체에 μ†ν•˜λ©° 기본적으둜 νšŒμ „ μ§€μ μž…λ‹ˆλ‹€.

ν•΄κ²° λœλŒ€λ‘œ λ‹«μœΌλ©΄ ν”Όλ²— / 액컀가 μ˜λ„ ν•œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

이 문제λ₯Ό μ œκΈ°ν•΄μ„œ μ£„μ†‘ν•˜μ§€λ§Œμ΄ μ €μž₯μ†Œλ₯Ό 톡해 검색 / 읽고 μžˆμ—ˆμœΌλ©° μ€‘μ•™μ—μ„œ DisplayObjectContainerλ₯Ό νšŒμ „ν•˜λŠ” 방법에 λŒ€ν•΄ 아직 λͺ…ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 피벗을 μ‚¬μš©ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆκ°€ λ‹€λ₯Έ 곳으둜 μ΄λ™ν•˜μ§€ μ•Šκ³  μ€‘μ•™μ—μ„œ λ’€μ§‘νž 수 μ—†μŠ΅λ‹ˆλ‹€. μ–΄λ–€ 아이디어? 93 λ²ˆμ„λ³΄κ³  그게 닡이라고 μƒκ°ν–ˆλŠ”λ° μ œλŒ€λ‘œ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ 도움을 μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€. 감사!

νŽΈμ§‘ : λ‚΄ 물체가 화면을 κ°€λ‘œ 질러 움직이고 μ›€μ§μ΄λŠ” λ™μ•ˆ λ’€μ§‘νž 것이라고 μ–ΈκΈ‰ν•˜λŠ” 것이 도움이 될 것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ˜ν•œ "ν”Œλ¦½ ν•‘"μ„ν•˜κΈ° μœ„ν•΄ μŠ€μΌ€μΌμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

@ mparker11 포인트λ₯Ό μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜κ³  λ’€μ§‘λŠ” ( scale )은 λ‹€λ¦…λ‹ˆλ‹€. pivot λŠ” rotation 의 값에 영ν–₯μ„μ€λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆκ°€ λ°°μœ¨μ— 따라 λ’€μ§‘νžˆλŠ” 방식에 μ œλŒ€λ‘œ 영ν–₯을 쀄 수 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@GoodBoyDigital에 λŒ€ν•œ 생각?

@englercj 응닡 @GoodBoyDigital μžμ‹ μ— μ‚¬μš©λ˜λŠ” 것을 λ³Ό μˆ˜μžˆλŠ”, 그것을 λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ ν–‰λ ¬ κ³±μ…ˆμ„ μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•œ 기사λ₯Ό 읽어 PIXI.DisplayObject.prototype.updateTransform κΈ°λŠ₯μ„ν•˜μ§€λ§Œ, λ‚΄ 인생 λ‚΄κ°€ μ •λ§μ—μ„œ ν™•μž₯ ν•  수 μžˆλ„λ‘ λ³€κ²½ν•˜λŠ” 방법을 이해할 수 μ—†λ‹€ λ³€κ²½ν•΄μ•Ό ν•  κ²½μš°μ—λ„ μ„Όν„°μž…λ‹ˆλ‹€.

음 ... 피벗을 μ‚¬μš©ν•˜λŠ” 방법을 ν™•μ‹€νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 주어진 μœ„μΉ˜μ—μ„œ μŠ€ν”„λΌμ΄νŠΈμ˜ μœ„μΉ˜λ₯Ό β€‹β€‹μ„€μ •ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ μ€‘μ‹¬μ—μ„œ νšŒμ „ν•˜λ„λ‘ λ§Œλ“€κ³  μ‹ΆμœΌλ―€λ‘œ 피벗을 λ‚΄ μŠ€ν”„λΌμ΄νŠΈμ˜ 쀑심 (sprite.width / 2, sprite.height / 2)에 μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. 이둜 인해 λ‚΄ μŠ€ν”„λΌμ΄νŠΈκ°€ 움직이고 0,0μ—μ„œ νšŒμ „ν•©λ‹ˆλ‹€.

μ–΄? λ‚΄κ°€ 뭐 λ†“μΉœ κ±° μ—†λ‹ˆ?

@tleunen μŠ€ν”„λΌμ΄νŠΈλ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— 액컀λ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

이 λ™μž‘μ€ v4μ—μ„œ μˆ˜μ •λ©λ‹ˆκΉŒ?

λ‚˜λŠ” Pixiλ₯Ό μ‹œν—˜ 해보고 μ¦‰μ‹œμ΄ "버그"λ₯Ό κ³΅κ²©ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.
λͺ‡ μ‹œκ°„ λ™μ•ˆ 인터넷 검색을 ν•œ 후에도 이것이 μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.
포럼의 λŒ€λΆ€λΆ„μ˜ μ‚¬λžŒλ“€μ€ "ν”Όλ²— λ™μž‘μ΄ κΉ¨μ‘ŒμŠ΅λ‹ˆλ‹€"라고 λ§ν•©λ‹ˆλ‹€. λ³„λ‘œ λ„μ›€μ΄λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‘λ ΅μŠ΅λ‹ˆλ‹€. 이것이 pixiκ°€ 피벗을 λ‹€λ£¨λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
이 '버그'κ°€ λ„ˆλ¬΄ λ§Žμ•„μ„œ λ“œλŸ¬λ‚˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 홍보 λ‚˜ 쑰깅을 ν•΄μ£Όμ„Έμš”.

2016 λ…„ 3 μ›” 10 일 λͺ©μš”일에 Ivan Kleshnin [email protected] 은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

_이 λ™μž‘μ€ v4μ—μ„œ μˆ˜μ •λ©λ‹ˆκΉŒ? _

λ‚˜λŠ” Pixiλ₯Ό μ‹œν—˜ 해보고 μ¦‰μ‹œμ΄ "버그"λ₯Ό κ³΅κ²©ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.
λͺ‡ μ‹œκ°„ λ™μ•ˆ 인터넷 검색을 ν•œ 후에도 이것이 μ–΄λ–»κ²Œν•΄μ•Όν•˜λŠ”μ§€ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.
μž‘μ—….
포럼의 λŒ€λΆ€λΆ„μ˜ μ‚¬λžŒλ“€μ€ "ν”Όλ²— λ™μž‘μ΄ κΉ¨μ‘ŒμŠ΅λ‹ˆλ‹€"라고 λ§ν•©λ‹ˆλ‹€. ν•˜μ§€ 맀우
λ„μ›€μ΄λ©λ‹ˆλ‹€.

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/pixijs/pixi.js/issues/190#issuecomment -194833811.

Mat Groves

_ 기술 νŒŒνŠΈλ„ˆ _

μ „ν™” : 07708 114496 :: www.goodboydigital.com
1 μΈ΅, Unit 9B, Queens Yard, White Post Lane, London, E9 5EN
goodboy Β©. 판ꢌ μ†Œμœ .

λ‹Ήμ‹ μ˜ μ˜κ²¬λ„ λ‘λ €μ›Œμš”

개인적으둜 "λ³„λ‘œ λ„μ›€μ΄λ˜μ§€ μ•ŠμŒ"을 받아듀이지 λ§ˆμ‹­μ‹œμ˜€.
기뢄을 μƒν•˜κ²Œν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ‚΄ 감정 μƒνƒœλ₯Ό μ„€λͺ…ν•˜κΈ°μœ„ν•œ 것이 μ—ˆμŠ΅λ‹ˆλ‹€.

이 '버그'κ°€ λ„ˆλ¬΄ λ§Žμ•„μ„œ λ“œλŸ¬λ‚˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 홍보 λ‚˜ 쑰깅을 ν•΄μ£Όμ„Έμš”.

λ‚˜λŠ”μ΄ μ—…κ³„μ—μ„œ 멍청이이기 λ•Œλ¬Έμ— 그것이 버그인지 μ•„λ‹Œμ§€ λͺ¨λ₯΄κ² λ‹€.
κ·Έλž˜μ„œ λ”°μ˜΄ν‘œ μ•ˆμ— "버그"λΌλŠ” 단어λ₯Ό λ„£μ—ˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ μ‚¬λžŒλ“€μ€ κ·Έλ ‡κ²Œ μƒκ°ν•©λ‹ˆλ‹€. 일뢀 – 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€.
방금 κ²½ν—˜μ„ κ³΅μœ ν•˜κ³  v4의 λ³€κ²½ 사항에 λŒ€ν•΄ μ§ˆλ¬Έν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μ •λ§λ‘œ Pixiλ₯Ό 배우고 μ‹Άμ—ˆμ§€λ§Œ 이것은 λ‚˜λ₯Ό μ‹€λ§μ‹œμΌ°λ‹€.

μ£Όμš” 문제 : 10 개 μ΄μƒμ˜ κ΄€λ ¨ 문제λ₯Ό 읽은 후에도 (여기와 μΈν„°λ„·μ—μ„œ) μ—¬μ „νžˆμ΄ λ™μž‘μ„ ν•΄κ²°ν•˜λŠ” 방법을 얻지 λͺ»ν•˜κ³  μ»¨ν…Œμ΄λ„ˆκ°€ μ •μ˜ 된 κ³΅κ°„μ˜ 쀑심을 μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λ„λ‘ν•©λ‹ˆλ‹€.
그리고 λ‚˜λŠ” νŠΉλ³„νžˆ 어리석지 μ•ŠμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•!

κ±±μ • ν•˜μ§€λ§ˆ, λ‚΄κ°€ ν‚€κ°€ μž‘λ‹€λ©΄ λ―Έμ•ˆν•΄ κΈ΄ ν•˜λ£¨ 끝에 λ‚˜λ₯Ό μž‘μ•˜μ–΄!

피벗은 μ •κ·œν™”λ˜μ§€ μ•Šμ€ 액컀 포인트둜 μž‘λ™ν•©λ‹ˆλ‹€.

이λ₯Ό μˆ˜μ •ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 개체λ₯Ό μ»¨ν…Œμ΄λ„ˆμ— μΆ”κ°€ν•˜κ³  μ»¨ν…Œμ΄λ„ˆλ₯Ό νšŒμ „μ‹œν‚€λ©΄μ„œ 개체λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ μ΄λ™ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

문제 μ—†μ–΄μš”. κ³ λ§™μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ‹Ήμ‹ μ˜ 쑰언을 μ‚¬μš©ν•˜λ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.

제 μƒκ°μ—λŠ” κ·Έλž˜ν”½ (λ˜λŠ” μ»¨ν…Œμ΄λ„ˆ)을 쀑심점을 μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 κ·Έλž˜ν”½μ΄ 그렀진 쀑심점 μ’Œν‘œλ₯Ό μ €μž₯ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그런 λ‹€μŒ κ·Έλž˜ν”½μ˜ μœ„μΉ˜μ™€ 피벗을 μ€‘μ‹¬μ μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€.
λ‹€μŒμ€ κ·Έ μ˜ˆμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ κ·Έλž˜ν”½ 객체λ₯Ό λ§Œλ“œλŠ” 경우 κ·Έ μœ„μ— κΈ°λ³Έ μš”μ†Œλ₯Ό 그릴 수 μžˆμŠ΅λ‹ˆλ‹€.
var test = new PIXI.Graphics(); test.drawRoundedRect(100, 100, 200, 200,12);
κΈ°λ³Έ μš”μ†ŒλŠ” 항상 Graphics 객체의 μœ„μΉ˜ (기본값은 0)λ₯Ό κΈ°μ€€μœΌλ‘œ κ·Έλ €μ§‘λ‹ˆλ‹€.
λ”°λΌμ„œ κ·Έλž˜ν”½ 객체의 μƒˆ μœ„μΉ˜λ₯Ό 200으둜 μ„€μ •ν•΄μ•Όν•©λ‹ˆλ‹€. 이것이 κΈ°λ³Έ μš”μ†Œμ˜ ν˜„μž¬ 쀑심점이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.
test.position.x = 200; test.position.y = 200;
이제 ν”„λ¦¬λ―Έν‹°λΈŒκ°€ 방금 μ΄λ™ν–ˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 피벗을 λ™μΌν•œ μ’Œν‘œλ‘œ μ„€μ •ν•΄μ•Όν•˜λ©° 그렸던 λ™μΌν•œ μœ„μΉ˜μ— μœ μ§€λ©λ‹ˆλ‹€.
test.pivot.x = 200; test.pivot.y = 200;

pivot 속성은 버그가 μ•„λ‹™λ‹ˆλ‹€. μž‘λ™ 방식과 "객체 μœ„μΉ˜μ— 영ν–₯을 λ―ΈμΉ˜λŠ”"이유λ₯Ό μ΄ν•΄ν•˜λŠ” 것은 μ•½κ°„ ν˜Όλž€ μŠ€λŸ½μŠ΅λ‹ˆλ‹€. κ°œμ²΄λŠ” 항상 μžμ‹ μ˜ μœ„μΉ˜λ₯Ό β€‹β€‹μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λ©° 피벗은 νšŒμ „ν•˜λŠ” μœ„μΉ˜μ—μ„œ μƒˆ 지점을 μ„€μ •ν•˜λŠ” 데 λ„μ›€μ΄λ©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„! κ°λ„κ°€μžˆλŠ” 피벗을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 마우슀λ₯Ό 따라 가도둝 ν•œ μŠ€ν”„λΌμ΄νŠΈμ˜ 각도 (피벗을 μ‚¬μš©ν•˜μ—¬ νšŒμ „ μœ„μΉ˜ μˆ˜μ •)λ₯Ό μˆ˜μ •ν•˜λ €κ³ ν•©λ‹ˆλ‹€.ν•˜μ§€λ§Œ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 도와 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

λ‚΄ μ½”λ“œ 펜 예제 확인 => http://codepen.io/jdnichollsc/pen/KgdRvV?editors=0010
그리고 였λ₯˜ => http://screencast.com/t/hSSaaTO4j0

미리 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€, Nicholls

λλ‚œ! pivot.y λ˜λŠ” pivot.x 만 μ‚¬μš© ν•˜ν•˜ν•˜! λͺ¨λ“  Pixi νŒ€μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€! : +1 :

제 μƒκ°μ—λŠ” κ·Έλž˜ν”½ (λ˜λŠ” μ»¨ν…Œμ΄λ„ˆ)을 쀑심점을 μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 κ·Έλž˜ν”½μ΄ 그렀진 쀑심점 μ’Œν‘œλ₯Ό μ €μž₯ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그런 λ‹€μŒ κ·Έλž˜ν”½μ˜ μœ„μΉ˜μ™€ 피벗을 μ€‘μ‹¬μ μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€.
λ‹€μŒμ€ κ·Έ μ˜ˆμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ κ·Έλž˜ν”½ 객체λ₯Ό λ§Œλ“œλŠ” 경우 κ·Έ μœ„μ— κΈ°λ³Έ μš”μ†Œλ₯Ό 그릴 수 μžˆμŠ΅λ‹ˆλ‹€.
var test = new PIXI.Graphics(); test.drawRoundedRect(100, 100, 200, 200,12);
κΈ°λ³Έ μš”μ†ŒλŠ” 항상 Graphics 객체의 μœ„μΉ˜ (기본값은 0)λ₯Ό κΈ°μ€€μœΌλ‘œ κ·Έλ €μ§‘λ‹ˆλ‹€.
λ”°λΌμ„œ κ·Έλž˜ν”½ 객체의 μƒˆ μœ„μΉ˜λ₯Ό 200으둜 μ„€μ •ν•΄μ•Όν•©λ‹ˆλ‹€. 이것이 κΈ°λ³Έ μš”μ†Œμ˜ ν˜„μž¬ 쀑심점이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.
test.position.x = 200; test.position.y = 200;
이제 ν”„λ¦¬λ―Έν‹°λΈŒκ°€ 방금 μ΄λ™ν–ˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 피벗을 λ™μΌν•œ μ’Œν‘œλ‘œ μ„€μ •ν•΄μ•Όν•˜λ©° 그렸던 λ™μΌν•œ μœ„μΉ˜μ— μœ μ§€λ©λ‹ˆλ‹€.
test.pivot.x = 200; test.pivot.y = 200;

pivot 속성은 버그가 μ•„λ‹™λ‹ˆλ‹€. μž‘λ™ 방식과 "객체 μœ„μΉ˜μ— 영ν–₯을 λ―ΈμΉ˜λŠ”"이유λ₯Ό μ΄ν•΄ν•˜λŠ” 것은 μ•½κ°„ ν˜Όλž€ μŠ€λŸ½μŠ΅λ‹ˆλ‹€. κ°œμ²΄λŠ” 항상 μžμ‹ μ˜ μœ„μΉ˜λ₯Ό β€‹β€‹μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λ©° 피벗은 νšŒμ „ν•˜λŠ” μœ„μΉ˜μ—μ„œ μƒˆ 지점을 μ„€μ •ν•˜λŠ” 데 λ„μ›€μ΄λ©λ‹ˆλ‹€.

μ•Ό, 그건 해킹이라고 μƒκ°ν•˜λŠ”λ°, λΆ€μž‘μš©μ΄μžˆμ–΄μ„œ μœ„μΉ˜κ°€ λ°”λ€Œ μ—ˆ κ±°λ“ 

이 μŠ€λ ˆλ“œλŠ” λ‹«νžŒ ν›„ 졜근 ν™œλ™μ΄ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ μž κ²ΌμŠ΅λ‹ˆλ‹€. κ΄€λ ¨ 버그에 λŒ€ν•œ μƒˆ 문제λ₯Όμ—¬μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
1 / 5 - 1 λ“±κΈ‰