#
    # 蛇のように動くキャラクターの頭のスクリプト
    #
    
    extends CharacterBody2D
    
    # 移動地点をプロットしたときのシグナル
    signal SIG_SET_WAY_POINT
    
    # 移動速度
    const MOVE_SPEED	: float = 60
    # 移動地点をプロットする数
    const WAY_COUNT		: int = 60
    # 移動地点をプロットする時間間隔
    const WAY_TIME		: float = 0.30
    
    # 移動地点をプロットしたリスト(配列、リングバッファ扱い)
    var way_point		: Array
    # プロットするリストの番号
    var way_count		: int
    # プロットする待機時間
    var way_time		: float = 0
    # 移動角度
    var way_angle		: float = PI / 2
    
    func _ready(): 
        # 場所プロット用の配列を用意する
        for i in WAY_COUNT:
            way_point.append(global_position)
        # 移動方向をway_angleの角度へ指定する
        set_move_velocity(way_angle)
    
    func _physics_process(delta):
        # 実際に移動する
        move_and_slide()
        # プロットの待ち時間を減らす
        way_time -= delta
        # プロットの待ち時間が0未満になった場合の処理
        if way_time < 0:
            # 待機時間の増加
            way_time += WAY_TIME
            # 現在の場所をプロットする
            set_way_point(global_position)
    
    
    # 指定された方向への移動量を設定する
    func set_move_velocity(_angle : float):
        velocity.x = cos(_angle) * MOVE_SPEED
        velocity.y = sin(_angle) * MOVE_SPEED
    
    # _positionで示された場所をプロットする
    func et_way_points(_position : Vector2):
        # way_point 配列の way_count の場所に _position を記録する
        way_point[way_count] = _position
        # 配列に記録する場所を次へ進める(リングバッファ)
        way_count = (way_count + 1) % WAY_COUNT
        # プロットしたこと伝えるシグナルを発行する
        SIG_SET_WAY_POINT.emit()