游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4858|回复: 0

?Godot??????????

[复制链接]

8717

主题

8783

帖子

1万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
11952
发表于 2018-10-9 10:22:24 | 显示全部楼层 |阅读模式
?/logoss

???indienova

????https://www.indienova.com/indie-game-development/making-slay-the-spire-arrow-with-godot/

?????????

???????????????????

20181009101639.gif

?????

???????????????

PS ????????????????

85458-1538136023.gif

??????????????????????????????????????

??????????????startPos?????endPos????? A?ctrlAPos????? B?ctrlBPos?

??????????

  1. position = startPos*(1-t)*(1-t)*(1-t)
  2.     + 3*ctrlAPos*t*(1-t)*(1-t)
  3.     + 3*ctrlBPos*t*t*(1-t)
  4.     + endPos*t*t*t
复制代码

???????????? t ????????t ???????????????? 0~1?

?? 0 ???????0.2 ????????? 20% ????0.5 ?????????1 ???????

??????? position ???? t ???????????

???????????????????????????????????????????????

??????????????????????

??????????????

85458-1538137298.png

?????????????????:

  1. ctrlAPos.x = startPos.x + (startPos.x - endPos.x) * 0.2
  2. ctrlAPos.y = endPos.y - (endPos.y - startPos.y) * 0.2

  3. ctrlBPos.x = startPos.x - (startPos.x - endPos.x) * 0.2
  4. ctrlBPos.y = endPos.y + (endPos.y - startPos.y) * 0.2
复制代码

????????????????????????????

Godot ????

?????????????? godot ????

?????????? 1 ??? 2????

85458-1538137614.png

85458-1538137626.png

? godot ?????????? Node2D???????????????

85458-1538137997.png

??????????????20?????????????????

???????????????????????

  1. extends Node2D
  2. var list=[] #???????20????
  3. func _ready():
  4.     #??19??????????1???
  5.     for i in range(19):
  6.         var sprite=Sprite.new()    #?? Sprite ??
  7.         add_child(sprite)          #??????
  8.         list.append(sprite)        #??????
  9.         sprite.texture=load("res://Sprites/??1.png")  #???????1
  10.         sprite.scale=Vector2(1,1)*(0.2+float(i)/18*0.8) #???????????????????????
  11.         sprite.offset=Vector2(-25,0)  #????????????????
  12.                                       #????????????????????????
  13.     #?????????????2???
  14.     var sprite=Sprite.new()   
  15.     add_child(sprite)
  16.     list.append(sprite)
  17.     sprite.texture=load("res://Sprites/??2.png")
  18.     sprite.offset=Vector2(-25,0)
复制代码

?????????????????????

  1. func reset(startPos,endPos):
  2.     #??????????????????
  3.     var ctrlAPos=Vector2()
  4.     var ctrlBPos=Vector2()
  5.     ctrlAPos.x=startPos.x+(startPos.x-endPos.x)*0.1 #??????????????????????????
  6.     ctrlAPos.y=endPos.y-(endPos.y-startPos.y)*0.2
  7.     ctrlBPos.y=endPos.y+(endPos.y-startPos.y)*0.3
  8.     ctrlBPos.x=startPos.x-(startPos.x-endPos.x)*0.3
  9.    #???????????????????
  10.     for i in range(20):
  11.         var t=float(i)/19
  12.         var pos=startPos*(1-t)*(1-t)*(1-t)+3*ctrlAPos*t*(1-t)*(1-t)+3*ctrlBPos*t*t*(1-t)+endPos*t*t*t
  13.         list[i].position=pos
  14.    #?????????????????????????   
  15.    updateAngle()   #???????????
复制代码

????????? updateAngle()????

??????????????????????????

  1. func updateAngle():
  2.     for i in range(20):
  3.         if i==0:
  4.             list[0].rotation_degrees=270    #???????????????
  5.         else:
  6.             var current=list[i]    #??????
  7.             var last=list[i-1]     #??????
  8.             var lenVec=current.position-last.position      #?????????
  9.             var a=lenVec.angle()       #???????????? angle()??????
  10.             a=rad2deg(a)               #??????
  11.            
  12.             current.rotation_degrees=a #????????
复制代码

??

??????????????????? reset ?????????

?????????? visible = false ?????

????????????

85458-1538139752.gif

?????

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-17 13:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表