feat: update booster

main
tiendat3699 2024-03-29 10:35:44 +07:00
parent 339bb55642
commit b7f13e4011
114 changed files with 29191 additions and 8409 deletions

View File

@ -0,0 +1,303 @@
[
{
"__type__": "cc.AnimationClip",
"_name": "ScoreObjectSpawn-002",
"_objFlags": 0,
"__editorExtras__": {
"embeddedPlayerGroups": []
},
"_native": "",
"sample": 60,
"speed": 1,
"wrapMode": 1,
"enableTrsBlending": false,
"_duration": 0.3333333333333333,
"_hash": 500763545,
"_tracks": [
{
"__id__": 1
},
{
"__id__": 12
}
],
"_exoticAnimation": null,
"_events": [],
"_embeddedPlayers": []
},
{
"__type__": "cc.animation.VectorTrack",
"_binding": {
"__type__": "cc.animation.TrackBinding",
"path": {
"__id__": 2
},
"proxy": null
},
"_channels": [
{
"__id__": 4
},
{
"__id__": 6
},
{
"__id__": 8
},
{
"__id__": 10
}
],
"_nComponents": 3
},
{
"__type__": "cc.animation.TrackPath",
"_paths": [
{
"__id__": 3
},
"position"
]
},
{
"__type__": "cc.animation.HierarchyPath",
"path": "Sprite"
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 5
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 7
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.16666666666666666
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 100,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 0,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 9
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 11
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.VectorTrack",
"_binding": {
"__type__": "cc.animation.TrackBinding",
"path": {
"__id__": 13
},
"proxy": null
},
"_channels": [
{
"__id__": 15
},
{
"__id__": 17
},
{
"__id__": 19
},
{
"__id__": 21
}
],
"_nComponents": 3
},
{
"__type__": "cc.animation.TrackPath",
"_paths": [
{
"__id__": 14
},
"scale"
]
},
{
"__type__": "cc.animation.HierarchyPath",
"path": "Sprite"
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 16
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 18
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.08333333333333333,
0.18333333333333332,
0.2833333333333333,
0.3333333333333333
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 0.5,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1.100000023841858,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 20
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 22
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
}
]

View File

@ -0,0 +1,13 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "c1f3213f-59a2-45ce-9786-df997bbe2d4f",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "ScoreObjectSpawn-002"
}
}

View File

@ -81,7 +81,7 @@
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1.3,
"value": 1.2999999523162842,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
@ -93,7 +93,7 @@
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 0.7,
"value": 0.699999988079071,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
@ -135,7 +135,7 @@
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 0.6,
"value": 0.6000000238418579,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
@ -262,7 +262,7 @@
},
{
"__type__": "cc.animation.HierarchyPath",
"path": "Particle"
"path": "Fx"
},
{
"__type__": "cc.animation.Channel",

View File

@ -7,7 +7,7 @@
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 0,
"_techIdx": 1,
"_defines": [
{}
],
@ -25,7 +25,7 @@
"_props": [
{
"mainTexture": {
"__uuid__": "22da4f3e-e271-413c-a5ef-d4b1ccba7b92@6c48a",
"__uuid__": "435cbd16-621a-4d9d-84e9-834d9e388b3a@6c48a",
"__expectedType__": "cc.Texture2D"
},
"tintColor": {

View File

@ -7,13 +7,12 @@
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 0,
"_techIdx": 1,
"_defines": [
{}
],
"_states": [
{
"stage": 200,
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
@ -25,11 +24,15 @@
],
"_props": [
{
"mainTexture": {
"__uuid__": "2a038be3-959b-404f-80ac-2c1223a1db30@6c48a",
"__expectedType__": "cc.Texture2D"
},
"tintColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"r": 127,
"g": 127,
"b": 127,
"a": 255
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,17 @@
import { _decorator, CCFloat, Collider2D, Component, Contact2DType } from 'cc';
import { _decorator, CCFloat, Collider2D, Component, Contact2DType, Animation } from 'cc';
import ObjectPool from '../Pool/ObjectPool';
import { EventManger } from '../Manager/EventManger';
import GameEvent from '../Events/GameEvent';
import IPoolable from '../Pool/IPoolable';
import Utilities from '../Utilities';
const { ccclass, property } = _decorator;
@ccclass('BoosterBase')
export class BoosterBase extends Component {
export class BoosterBase extends Component implements IPoolable {
@property({ type: Collider2D, visible: true })
private _collider: Collider2D;
protected _collider: Collider2D;
@property({ type: Animation, visible: true })
private _animation: Animation;
@property(CCFloat)
protected time: number = 10;
@ -16,10 +20,17 @@ export class BoosterBase extends Component {
}
private onContactBegin(self: Collider2D, other: Collider2D) {
this.BoosterActive();
this.boosterActive();
EventManger.instance.emit(GameEvent.ObjectRelease, this.node);
ObjectPool.release(this.node);
}
protected BoosterActive?(): void;
protected boosterActive?(): void;
async onGet() {
this._animation.play();
await Utilities.delay(this._animation.defaultClip.duration);
this._collider.enabled = true;
}
onRelease() {}
}

View File

@ -6,7 +6,7 @@ const { ccclass, property } = _decorator;
@ccclass('CumulativeBooster')
export class CumulativeBooster extends BoosterBase {
protected BoosterActive(): void {
protected boosterActive(): void {
GameManager.instance.ActiveBooster(BoosterType.CumulativeBar, this.time);
}
}

View File

@ -1,9 +1,9 @@
enum GameState {
Init,
Playing,
GameOver,
End,
Relive,
Init = 'Init',
Playing = 'Playing',
GameOver = 'GameOver',
End = 'End',
Relive = 'Relive',
}
export default GameState;

View File

@ -1,7 +1,7 @@
enum ScoreType {
Goal,
DestroyObject,
Combo,
Goal = 'Goal',
DestroyObject = 'DestroyObject',
Combo = 'Combo',
}
export default ScoreType;

View File

@ -4,6 +4,7 @@ enum TimeConfig {
DelayGoal = 2,
DelayCannonFire = 0.4,
DelayCannonDone = 0.5,
Tutorial = 10,
}
export default TimeConfig;

View File

@ -0,0 +1,17 @@
import { _decorator, Animation, Vec3 } from 'cc';
import Utilities from '../Utilities';
import Singleton from '../Singleton';
const { ccclass, property } = _decorator;
@ccclass('CameraController')
export class CameraController extends Singleton<CameraController>() {
@property({ type: Animation, visible: true })
private _animation: Animation;
public async shake(time: number) {
this._animation.play();
await Utilities.delay(time);
this._animation.stop();
this.node.setPosition(new Vec3(0, 0, 1000));
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "46beeb67-8d0a-42dd-b330-8e62fd99cfe8",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -1,10 +1,12 @@
import { _decorator, CCInteger, clamp, Component, lerp, Sprite } from 'cc';
import { _decorator, CCInteger, clamp, Component, lerp, Sprite, Node, tween, Prefab } from 'cc';
import { EventManger } from '../Manager/EventManger';
import GameEvent from '../Events/GameEvent';
import ScoreType from '../Enum/ScoreType';
import Utilities from '../Utilities';
import { GameManager } from '../Manager/GameManager';
import BoosterType from '../Enum/BoosterType';
import { SpawnObjectManager } from '../Manager/SpawnObjectManager';
import ObjectPool from '../Pool/ObjectPool';
const { ccclass, property } = _decorator;
@ccclass('CumulativeBar')
@ -13,29 +15,32 @@ export class CumulativeBar extends Component {
private _fillBar: Sprite;
@property({ type: CCInteger, visible: true })
private _maxValue = 1000;
@property({ type: Node, visible: true })
private _scoreUI: Node;
@property({ type: Prefab, visible: true })
private _scoreObjectPrefab: Prefab;
private _pools: ObjectPool;
private _currentValue = 0;
private _fillValue = 0;
private _active = false;
private _goal = false;
private _timer = 0;
protected onLoad(): void {
this._fillBar.fillRange = 0;
this._pools = new ObjectPool(this._scoreObjectPrefab, 10, false);
EventManger.instance.on(GameEvent.Score, this.onScore, this);
EventManger.instance.on(GameEvent.BoosterActive, this.onBoosterActive, this);
EventManger.instance.on(GameEvent.BoosterDisable, this.onBoosterDisable, this);
}
protected update(dt: number): void {
if (Math.abs(this._fillValue - this._fillBar.fillRange) >= 0.001) {
this._fillBar.fillRange = lerp(this._fillBar.fillRange, this._fillValue, dt * 3);
}
if (!this._active && this._currentValue > 0) {
if (!this._goal && !this._active && this._currentValue > 0) {
this._timer += dt;
if (this._timer >= 1) {
if (this._timer >= 0.1) {
this._timer = 0;
this._currentValue -= 25;
this._currentValue -= 0.5;
if (this._currentValue < 0) {
this._currentValue = 0;
@ -43,29 +48,56 @@ export class CumulativeBar extends Component {
this._fillValue = -clamp(this._currentValue / 2 / this._maxValue, 0, 0.5);
}
}
if (Math.abs(this._fillValue - this._fillBar.fillRange) >= 0.001) {
this._fillBar.fillRange = lerp(this._fillBar.fillRange, this._fillValue, dt * 3);
}
}
private async onScore(score: number, points: number, type: ScoreType) {
if (!this._active) return;
switch (type) {
case ScoreType.DestroyObject:
if (!this._active) return;
this._currentValue += points;
break;
case ScoreType.Goal:
if (this._currentValue == 0) return;
this._goal = true;
await Utilities.delay(1);
GameManager.instance.addScore(this._currentValue, ScoreType.Combo, this.node.getWorldPosition(), {
scaleMin: 2,
scaleMax: 4,
duration: 1,
});
let items = Math.round(this._currentValue / 5);
GameManager.instance.addScore(
Math.round(this._currentValue),
ScoreType.Combo,
this.node.getWorldPosition(),
{
scaleMin: 2,
scaleMax: 4,
duration: 1,
},
);
this._currentValue = 0;
this._goal = false;
this.playCollectEffect(items);
break;
}
this._fillValue = -clamp(this._currentValue / 2 / this._maxValue, 0, 0.5);
}
private async playCollectEffect(items: number) {
const time = items < 10 ? 0.05 : 1.5 / items;
while (items > 0) {
const obj = this._pools.get(this.node);
obj.setWorldPosition(this.node.worldPosition);
tween(obj)
.to(0.3, { worldPosition: this._scoreUI.worldPosition })
.call(() => ObjectPool.release(obj))
.start();
items--;
await Utilities.delay(time);
}
}
private onBoosterActive(type: BoosterType) {
if (type == BoosterType.CumulativeBar) this._active = true;
}

View File

@ -1,4 +1,5 @@
import { _decorator, Collider2D, Component, Contact2DType, Node, Animation } from 'cc';
import { _decorator, Collider2D, Component, Contact2DType, Node, Animation, RigidBody2D } from 'cc';
import { CameraController } from './CameraController';
const { ccclass, property } = _decorator;
@ccclass('SlingShot')
@ -14,5 +15,7 @@ export default class SlingShot extends Component {
onBeginContact(self: Collider2D, other: Collider2D) {
this._animation.play();
const velocity = other.getComponent(RigidBody2D).linearVelocity.length();
if (velocity >= 40) CameraController.instance.shake(0.08);
}
}

View File

@ -2,6 +2,7 @@ import { Node } from 'cc';
import GameState from '../Enum/GameState';
import ScoreType from '../Enum/ScoreType';
import BoosterType from '../Enum/BoosterType';
import { ControllerSide } from '../GamePlay/Flipper';
enum GameEvent {
Score,
@ -12,6 +13,8 @@ enum GameEvent {
ObjectRelease,
BoosterActive,
BoosterDisable,
ControlTouchStart,
ControlTouchEnd,
}
export interface GameEventCallbackMap {
@ -21,8 +24,10 @@ export interface GameEventCallbackMap {
[GameEvent.TimeUpdate]: (time: number) => void;
[GameEvent.GameStateChange]: (state: GameState) => void;
[GameEvent.ObjectRelease]: (obj: Node) => void;
[GameEvent.BoosterActive]: (score: BoosterType) => void;
[GameEvent.BoosterDisable]: (score: BoosterType) => void;
[GameEvent.BoosterActive]: (boosterType: BoosterType) => void;
[GameEvent.BoosterDisable]: (boosterType: BoosterType) => void;
[GameEvent.ControlTouchStart]: (touchSide: ControllerSide) => void;
[GameEvent.ControlTouchEnd]: (touchSide: ControllerSide) => void;
}
export interface GameEventArgMap {
@ -34,6 +39,8 @@ export interface GameEventArgMap {
[GameEvent.ObjectRelease]: Node;
[GameEvent.BoosterActive]: BoosterType;
[GameEvent.BoosterDisable]: BoosterType;
[GameEvent.ControlTouchStart]: ControllerSide;
[GameEvent.ControlTouchEnd]: ControllerSide;
}
export default GameEvent;

View File

@ -15,6 +15,7 @@ import { Ball } from './Ball';
import TimeConfig from '../Enum/TimeConfig';
import { EventManger } from '../Manager/EventManger';
import GameEvent from '../Events/GameEvent';
import { CameraController } from '../Environments/CameraController';
const { ccclass, property } = _decorator;
@ccclass('Cannon')
@ -40,6 +41,7 @@ export class Cannon extends Component {
ball.setActiveRigi(false);
tween(ball.node).to(0.1, { worldPosition: this.node.worldPosition }).start();
await Utilities.delay(TimeConfig.DelayCannonFire);
CameraController.instance.shake(0.2);
this._animation.play();
ball.setActiveRigi(true);
ball.throwBall(new Vec2(0, this._force));

View File

@ -107,7 +107,7 @@ export class Enemy extends Component {
.start();
}
private onScore(score: number, type: ScoreType) {
private onScore(score: number, points: number, type: ScoreType) {
if (type == ScoreType.Goal) {
this._currentGoal++;
if (this._currentGoal == this._requireGoal) {

View File

@ -15,6 +15,7 @@ import ObjectPool from '../Pool/ObjectPool';
import { Ball } from './Ball';
import { SoundManager } from '../Manager/SoundManager';
import TimeConfig from '../Enum/TimeConfig';
import { CameraController } from '../Environments/CameraController';
const { ccclass, property } = _decorator;
@ccclass('Goal')
@ -47,6 +48,7 @@ export class Goal extends Component {
fx.play();
SoundManager.instance.playSfx(this._goalSound);
ObjectPool.release(ball.node);
CameraController.instance.shake(0.5);
await Utilities.waitUntil(() => fx.isStopped);
this._goalFxPool.release(fx.node);
}

View File

@ -1,8 +1,10 @@
import { _decorator, Collider2D, Component, Contact2DType, Vec2, Node } from 'cc';
import { _decorator, Collider2D, Component, Contact2DType, Vec2, Node, ParticleSystem, Prefab } from 'cc';
import { GameManager } from '../Manager/GameManager';
import Utilities from '../Utilities';
import { Ball } from './Ball';
import TimeConfig from '../Enum/TimeConfig';
import ObjectPool from '../Pool/ObjectPool';
import { CameraController } from '../Environments/CameraController';
const { ccclass, property } = _decorator;
@ccclass('MultiBall')
@ -13,24 +15,29 @@ export class MultiBall extends Component {
private _portLeft;
@property({ type: Node, visible: true })
private _portRight;
@property({ type: Prefab, visible: true })
private _fx: Prefab;
private _originBall: Ball;
private _trigged = false;
private _fxPool: ObjectPool;
protected onLoad(): void {
this._fxPool = new ObjectPool(this._fx, 2, true);
this._collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
}
protected lateUpdate(dt: number): void {
if (this._trigged) {
CameraController.instance.shake(0.2);
this._originBall.setActiveRigi(true);
const ball1 = this._originBall;
const ball2 = GameManager.instance.spawnBall(false);
ball1.node.setWorldPosition(this._portRight.worldPosition);
ball1.addForce(new Vec2(10, 0));
ball1.addForce(new Vec2(20, 0));
ball2.node.setWorldPosition(this._portLeft.worldPosition);
ball2.addForce(new Vec2(-10, 0));
ball2.addForce(new Vec2(-20, 0));
ball1.playMultiBallEffect();
ball2.playMultiBallEffect();
@ -45,7 +52,11 @@ export class MultiBall extends Component {
this._originBall = otherCollider.getComponent(Ball);
this._originBall.setActiveRigi(false);
this._trigged = true;
const fx = this._fxPool.get(this.node, ParticleSystem);
fx.node.setWorldPosition(this.node.worldPosition);
await Utilities.delay(TimeConfig.DelayMultiBall);
this._collider.enabled = true;
await Utilities.waitUntil(() => fx.isStopped);
this._fxPool.release(fx.node);
}
}

View File

@ -25,6 +25,8 @@ import { SoundManager } from '../Manager/SoundManager';
import PhysicsGroup from '../Enum/PhysicGroup';
import ObjectPool from '../Pool/ObjectPool';
import Utilities from '../Utilities';
import { EventManger } from '../Manager/EventManger';
import GameEvent from '../Events/GameEvent';
const { ccclass, property } = _decorator;
@ccclass('Ball')
@ -45,6 +47,8 @@ export class Ball extends Component implements IPoolable {
private _trail: ParticleSystem;
@property({ type: ParticleSystem, visible: true })
private _buffParticle: ParticleSystem;
@property({ type: ParticleSystem, visible: true })
private _boosterParticle: ParticleSystem;
@property({ type: CircleCollider2D, visible: true })
private _collider: CircleCollider2D;
@property({ type: AudioClip, visible: true })
@ -63,13 +67,21 @@ export class Ball extends Component implements IPoolable {
public eventHitObstacle = new EventTarget();
public eventGoal = new EventTarget();
public init(boosterActive: boolean) {
if (boosterActive) this._boosterParticle.play();
else this._boosterParticle.stop();
}
protected onLoad(): void {
if (this._collider) {
this._collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
this._collider.on(Contact2DType.END_CONTACT, this.onEndContact, this);
}
director.on(Director.EVENT_AFTER_PHYSICS, this.setMaxVelocity, this);
this._impactPool = new ObjectPool(this._impactPrefab, 5, false);
this._impactPool = new ObjectPool(this._impactPrefab, 10, false);
EventManger.instance.on(GameEvent.BoosterActive, this.onBoosterActive, this);
EventManger.instance.on(GameEvent.BoosterDisable, this.onBoosterDisable, this);
}
protected update(dt: number): void {
@ -105,7 +117,8 @@ export class Ball extends Component implements IPoolable {
) {
if (this._isHit) return;
this._isHit = true;
if (!otherCollider.sensor && this._rigidBody.linearVelocity.length() >= 5) {
const velocity = this._rigidBody.linearVelocity.length();
if (!otherCollider.sensor && velocity >= 5) {
this._animation.play();
let hitPoint = contact.getWorldManifold().points[0];
@ -120,7 +133,6 @@ export class Ball extends Component implements IPoolable {
}
const hitFx = this._impactPool.get(this.node.parent, ParticleSystem);
hitFx.node.setWorldPosition(new Vec3(hitPoint.x, hitPoint.y, 10));
hitFx.play();
SoundManager.instance.playSfx(this._hitSound);
await Utilities.waitUntil(() => hitFx.isStopped, 0.1);
this._impactPool.release(hitFx.node);
@ -131,6 +143,14 @@ export class Ball extends Component implements IPoolable {
this._isHit = false;
}
private onBoosterActive() {
this._boosterParticle.play();
}
private onBoosterDisable() {
this._boosterParticle.stop();
}
private setMaxVelocity() {
if (this._rigidBody.linearVelocity.length() > this._maxSpeed) {
this._rigidBody.linearVelocity = this._rigidBody.linearVelocity.normalize().multiplyScalar(this._maxSpeed);
@ -174,5 +194,8 @@ export class Ball extends Component implements IPoolable {
this._rigidBody.linearVelocity = Vec2.ZERO.clone();
this._rigidBody.angularVelocity = 0;
this._buffParticle.stop();
this.getComponentsInChildren(ParticleSystem).forEach((particle) => {
particle.clear();
});
}
}

View File

@ -8,12 +8,16 @@ import {
EventKeyboard,
KeyCode,
Enum,
EventTouch,
screen,
Animation,
Vec3,
AnimationState,
} from 'cc';
import { EventManger } from '../Manager/EventManger';
import GameEvent from '../Events/GameEvent';
import TimeConfig from '../Enum/TimeConfig';
const { ccclass, property } = _decorator;
enum ControllerSide {
export enum ControllerSide {
Left,
Right,
}
@ -22,6 +26,8 @@ Enum(ControllerSide);
@ccclass('Flipper')
export class Flipper extends Component {
@property({ type: Animation, visible: true })
private _animation: Animation;
@property({ visible: true, type: HingeJoint2D })
private _hingeJoint: HingeJoint2D;
@property({ visible: true, type: CCFloat })
@ -31,11 +37,26 @@ export class Flipper extends Component {
@property({ visible: true, type: ControllerSide })
private side = ControllerSide.Left;
private _timer = 0;
private _isAnimationPlaying;
protected onLoad(): void {
input.on(Input.EventType.KEY_DOWN, this.onKeyInputDown, this);
input.on(Input.EventType.KEY_UP, this.onKeyInputUp, this);
input.on(Input.EventType.TOUCH_START, this.onTouchStart, this);
input.on(Input.EventType.TOUCH_END, this.onTouchEnd, this);
EventManger.instance.on(GameEvent.ControlTouchStart, this.onTouchStart, this);
EventManger.instance.on(GameEvent.ControlTouchEnd, this.onTouchEnd, this);
}
protected start(): void {
this._animation.play();
}
protected update(dt: number): void {
this._timer += dt;
this._isAnimationPlaying = this._animation.getState(this._animation.defaultClip.name).isPlaying;
if (!this._isAnimationPlaying && this._timer >= TimeConfig.Tutorial) {
this._animation.play();
}
}
//#region Input Handler
@ -45,10 +66,18 @@ export class Flipper extends Component {
case KeyCode.KEY_A:
case KeyCode.ARROW_LEFT:
if (this.side == ControllerSide.Left) this.activeFlipper();
this._timer = 0;
if (this._animation.getState(this._animation.defaultClip.name).isPlaying) {
this._animation.stop();
}
break;
case KeyCode.KEY_D:
case KeyCode.ARROW_RIGHT:
if (this.side == ControllerSide.Right) this.activeFlipper();
this._timer = 0;
if (this._isAnimationPlaying) {
this._animation.stop();
}
break;
default:
break;
@ -70,27 +99,20 @@ export class Flipper extends Component {
}
}
private onTouchStart(event: EventTouch) {
if (event.getLocationX() > screen.windowSize.x / 2) {
if (this.side == ControllerSide.Right) {
this.activeFlipper();
}
} else {
if (this.side == ControllerSide.Left) {
this.activeFlipper();
}
private onTouchStart(controllerSide: ControllerSide) {
if (this.side == controllerSide) {
this.activeFlipper();
}
this.node.setScale(Vec3.ONE);
this._timer = 0;
if (this._isAnimationPlaying) {
this._animation.stop();
}
}
private onTouchEnd(event: EventTouch) {
if (event.getLocationX() > screen.windowSize.x / 2) {
if (this.side == ControllerSide.Right) {
this.deActiveFlipper();
}
} else {
if (this.side == ControllerSide.Left) {
this.deActiveFlipper();
}
private onTouchEnd(controllerSide: ControllerSide) {
if (this.side == controllerSide) {
this.deActiveFlipper();
}
}

View File

@ -1,26 +1,12 @@
import { __private, _decorator, Component, EventTarget, Node } from 'cc';
import { __private, _decorator, EventTarget } from 'cc';
import { GameEventArgMap, GameEventCallbackMap } from '../Events/GameEvent';
import Singleton from '../Singleton';
const { ccclass, property } = _decorator;
@ccclass('EventManger')
export class EventManger extends Component {
//singleton
private static _instance: EventManger = null;
public static get instance(): EventManger {
if (!EventManger._instance) {
EventManger._instance = new EventManger('EventManger');
}
return EventManger._instance;
}
export class EventManger extends Singleton<EventManger>('EventManger') {
private _eventTarget = new EventTarget();
onLoad() {
if (!EventManger._instance) {
EventManger._instance = this;
}
}
public on<K extends keyof GameEventCallbackMap>(
eventType: K,
callback: GameEventCallbackMap[K],

View File

@ -25,6 +25,7 @@ import { SoundManager } from './SoundManager';
import TimeConfig from '../Enum/TimeConfig';
import BEConnector from '../API/BEConnector';
import BoosterType from '../Enum/BoosterType';
import Singleton from '../Singleton';
const { ccclass, property } = _decorator;
window.addEventListener('message', (data) => {
@ -52,13 +53,9 @@ class Booster {
}
@ccclass('GameManager')
export class GameManager extends Component {
//singleton
private static _instance: GameManager = null;
public static get instance(): GameManager {
return GameManager._instance;
}
export class GameManager extends Singleton<GameManager>() {
@property({ visible: true })
private _colliderDebug: boolean = false;
@property({ type: Prefab, visible: true })
private _ballPrefab: Prefab;
@property({ type: Prefab, visible: true })
@ -93,10 +90,10 @@ export class GameManager extends Component {
}
protected onLoad(): void {
GameManager._instance = this;
super.onLoad();
this._ballPool = new ObjectPool(this._ballPrefab, 10, true, Ball);
this._FloatingScorePool = new ObjectPool(this._floatingScoreText, 10, true);
// PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Shape;
if (this._colliderDebug) PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Shape;
}
protected start(): void {
@ -182,6 +179,7 @@ export class GameManager extends Component {
SoundManager.instance.playSfx(this._startSound);
this.setCurrentBallInGame(1);
const ball = this._ballPool.get(this._ballHolder, Ball);
ball.init(this._boostersActive.length > 0);
ball.node.setRotation(Quat.IDENTITY);
ball.node.setPosition(this._ballSpawnPosition);
if (!throwBall) return ball;
@ -198,6 +196,12 @@ export class GameManager extends Component {
this.setCurrentBallInGame(-1);
if (this._currentBallInGame <= 0) {
EventManger.instance.emit(GameEvent.BallOut, null);
for (let i = 0; i < this._boostersActive.length; i++) {
const booster = this._boostersActive[i];
EventManger.instance.emit(GameEvent.BoosterDisable, booster.type);
}
this._boostersActive = [];
await Utilities.delay(TimeConfig.DelayPLay);
this.spawnBall(true);
}

View File

@ -1,4 +1,5 @@
import { _decorator, AudioClip, AudioSource, Component, Node } from 'cc';
import Singleton from '../Singleton';
const { ccclass, property } = _decorator;
class SoundSource {
@ -34,25 +35,12 @@ class SoundSource {
}
@ccclass('SoundManager')
export class SoundManager extends Component {
//singleton
private static _instance: SoundManager;
public static get instance(): SoundManager {
if (!SoundManager._instance) {
SoundManager._instance = new SoundManager('SoundManager');
}
return SoundManager._instance;
}
export class SoundManager extends Singleton<SoundManager>('SoundManager') {
private _audioSourcesSfx: { [key: string]: SoundSource } = {};
private _audioSourceBgm: SoundSource;
private isMute = false;
protected onLoad(): void {
SoundManager._instance = this;
}
public toggleMute(): boolean {
this.isMute = !this.isMute;
this.setMute(this.isMute);

View File

@ -6,6 +6,8 @@ import GameEvent from '../Events/GameEvent';
import GameState from '../Enum/GameState';
import Utilities from '../Utilities';
import ScoreType from '../Enum/ScoreType';
import Singleton from '../Singleton';
import { BoosterBase } from '../Booster/BoosterBase';
const { ccclass, property } = _decorator;
@ccclass('weightedObject')
@ -26,22 +28,17 @@ class weightedObject {
@ccclass('SpawnObjectManager')
export class SpawnObjectManager extends Component {
//#region singleton
private static _instance: SpawnObjectManager = null;
public static get instance(): SpawnObjectManager {
return SpawnObjectManager._instance;
}
//#endregion
@property({ type: weightedObject, visible: true })
private _objects: weightedObject[] = [];
@property({ type: weightedObject, visible: true })
private _boosters: weightedObject[] = [];
@property({ type: Node, visible: true })
private _spawnPoints: Node[] = [];
@property({ type: CCFloat, visible: true, range: [1, 10], slide: true })
private _spawnTime;
@property({ type: CCFloat, visible: true, range: [1, 100], slide: true })
@property({ type: CCFloat, visible: true })
private readonly _spawnTime;
@property({ type: CCFloat, visible: true })
private readonly _spawnTimeWhenBoosterActive;
@property({ type: CCFloat, visible: true })
private _spawnBoosterTime;
private _pools: ObjectPool[] = [];
@ -51,15 +48,18 @@ export class SpawnObjectManager extends Component {
private _timer = 0;
private _timerBooster = 0;
private _weights: number[] = [];
private _boosterWeights: number[] = [];
private _isReplay = false;
private _boosterSpawned = false;
private _spawnTimeObject = 0;
protected onLoad(): void {
SpawnObjectManager._instance = this;
EventManger.instance.on(GameEvent.ObjectRelease, this.onObjectRelease, this);
EventManger.instance.on(GameEvent.GameStateChange, this.onGameStateChange, this);
EventManger.instance.on(GameEvent.Score, this.onScore, this);
EventManger.instance.on(GameEvent.BoosterActive, this.onBoosterActive, this);
EventManger.instance.on(GameEvent.BoosterDisable, this.onBoosterDisable, this);
this._spawnTimeObject = this._spawnTime;
for (let i = 0; i < this._objects.length; i++) {
const prefab = this._objects[i].prefab;
@ -68,14 +68,14 @@ export class SpawnObjectManager extends Component {
for (let i = 0; i < this._boosters.length; i++) {
const prefab = this._boosters[i].prefab;
this._boosterPools[i] = new ObjectPool(prefab, 2, true);
this._boosterPools[i] = new ObjectPool(prefab, 2, true, BoosterBase);
}
}
protected update(dt: number): void {
if (!this._playing) return;
this._timer += dt;
if (this._timer >= this._spawnTime) {
if (this._timer >= this._spawnTimeObject) {
this._timer = 0;
this.spawn();
}
@ -106,7 +106,7 @@ export class SpawnObjectManager extends Component {
private spawnBooster() {
if (Object.keys(this._usedPoints).length == this._spawnPoints.length) return;
do {
var randomPool = Utilities.weightedRandom(this._boosterPools, this._weights);
var randomPool = Utilities.weightedRandom(this._boosterPools, this._boosterWeights);
var index = this._boosterPools.indexOf(randomPool);
} while (this._boosters[index].maxObjects != -1 && randomPool.countActive >= this._boosters[index].maxObjects);
@ -126,9 +126,14 @@ export class SpawnObjectManager extends Component {
private onBoosterActive() {
this._boosterSpawned = false;
this._spawnTimeObject = this._spawnTimeWhenBoosterActive;
}
private onScore(score: number, type: ScoreType) {
private onBoosterDisable() {
this._spawnTimeObject = this._spawnTime;
}
private onScore(score: number, points: number, type: ScoreType) {
if (type == ScoreType.Goal) {
this._objects.forEach((object) => {
if (object.currentWeight >= object.maxWeight) {
@ -138,7 +143,16 @@ export class SpawnObjectManager extends Component {
object.currentWeight += object.weightStepOnGoal;
});
this._boosters.forEach((object) => {
if (object.currentWeight >= object.maxWeight) {
object.currentWeight = object.maxWeight;
return;
}
object.currentWeight += object.weightStepOnGoal;
});
this._weights = this._objects.map((obj) => obj.currentWeight);
this._boosterWeights = this._boosters.map((obj) => obj.currentWeight);
}
}
@ -153,6 +167,10 @@ export class SpawnObjectManager extends Component {
obj.currentWeight = obj.weight;
return obj.currentWeight;
});
this._boosterWeights = this._boosters.map((obj) => {
obj.currentWeight = obj.weight;
return obj.currentWeight;
});
for (let i = 0; i < randomRangeInt(5, 10); i++) {
this.spawn();
}

View File

@ -1,5 +1,6 @@
import { Component, Node, Prefab, director, instantiate } from 'cc';
import IPoolable from './IPoolable';
import { error } from 'cc';
export default class ObjectPool {
private _inactive: Node[] = [];
@ -25,6 +26,11 @@ export default class ObjectPool {
}
constructor(prefab: Prefab, size: number, expandable = true, poolHandlerComp?: new () => any | string) {
if (!!!prefab) {
console.error('prefab cant be null or undefine');
return;
}
this._prefab = prefab;
this._expandable = expandable;
this._poolHandlerComp = poolHandlerComp;
@ -46,6 +52,10 @@ export default class ObjectPool {
public get(parent?: Node): Node;
public get<T extends Component>(parent?: Node, classConstructor?: new () => T): T;
public get<T extends Component>(parent?: Node, classConstructor?: new () => T): T | Node {
if (!!!this._prefab) {
console.error('prefab cant be null or undefine');
return;
}
let obj: Node = null;
let p = parent || director.getScene();
if (this._inactive.length > 0) {
@ -57,6 +67,7 @@ export default class ObjectPool {
ObjectPool._poolLookUp[obj.uuid] = this;
} else {
obj = this._actives.shift();
obj.removeFromParent();
}
obj.setParent(p);

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "12993aad-2e72-407d-8568-829c74efdbbc",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,20 @@
import { Component, Node } from 'cc';
export default function Singleton<T>(component?: string) {
class Singleton extends Component {
//singleton
private static _instance: T = null;
public static get instance(): T {
if (component && !Singleton._instance) {
Singleton._instance = new Node(component).addComponent(component) as T;
}
return Singleton._instance;
}
protected onLoad(): void {
Singleton._instance = this as unknown as T;
}
}
return Singleton;
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "698c78bc-df06-48e6-a7ee-3e7465a060fe",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,37 @@
import { _decorator, Component, Input, Node } from 'cc';
import { EventManger } from '../Manager/EventManger';
import GameEvent from '../Events/GameEvent';
import { ControllerSide } from '../GamePlay/Flipper';
const { ccclass, property } = _decorator;
@ccclass('TouchController')
export class TouchController extends Component {
@property({ type: Node, visible: true })
private _left: Node;
@property({ type: Node, visible: true })
private _right: Node;
protected onLoad(): void {
this._left.on(Input.EventType.TOUCH_START, this.onLeftTouchStart, this);
this._left.on(Input.EventType.TOUCH_END, this.onLeftTouchEnd, this);
this._right.on(Input.EventType.TOUCH_START, this.onRightTouchStart, this);
this._right.on(Input.EventType.TOUCH_END, this.onRightTouchEnd, this);
}
private onLeftTouchStart() {
EventManger.instance.emit(GameEvent.ControlTouchStart, ControllerSide.Left);
}
private onLeftTouchEnd() {
EventManger.instance.emit(GameEvent.ControlTouchEnd, ControllerSide.Left);
}
private onRightTouchStart() {
EventManger.instance.emit(GameEvent.ControlTouchStart, ControllerSide.Right);
}
private onRightTouchEnd() {
EventManger.instance.emit(GameEvent.ControlTouchEnd, ControllerSide.Right);
}
}

View File

@ -0,0 +1,9 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "ae76d02c-efb3-4161-8281-bdd560f137da",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@ -1,5 +1,7 @@
import { _decorator, Component, EventKeyboard, EventTouch, input, Input, KeyCode, Node, Tween, tween, Vec3 } from 'cc';
import { GameManager } from '../Manager/GameManager';
import TimeConfig from '../Enum/TimeConfig';
import Utilities from '../Utilities';
const { ccclass, property } = _decorator;
@ccclass('TutorialController')
@ -9,44 +11,71 @@ export class TutorialController extends Component {
@property({ type: Node, visible: true })
private _tapR: Node;
private _timer = 0;
private _showed = false;
protected onLoad(): void {
this.node.on(Input.EventType.TOUCH_START, this.onTouch, this);
input.on(Input.EventType.KEY_UP, this.onKeyInputUp, this);
this.node.on(Input.EventType.TOUCH_START, this.onTouchStart, this);
input.on(Input.EventType.KEY_UP, this.onKeyInputUpStart, this);
}
protected onDisable(): void {
this.node.off(Input.EventType.TOUCH_START, this.onTouch, this);
input.off(Input.EventType.KEY_UP, this.onKeyInputUp, this);
}
protected start() {
protected async start() {
tween(this._tapL)
.by(0.5, { position: new Vec3(0, 50) }, { easing: 'quintOut' })
.by(0.5, { position: new Vec3(0, -50) }, { easing: 'sineOut' })
.by(0.5, { position: new Vec3(0, 50), scale: new Vec3(-0.1, -0.1) }, { easing: 'quintOut' })
.by(0.5, { position: new Vec3(0, -50), scale: new Vec3(0.1, 0.1) }, { easing: 'sineOut' })
.union()
.repeatForever()
.start();
await Utilities.delay(0.5);
tween(this._tapR)
.delay(0.5)
.by(0.5, { position: new Vec3(0, 50) }, { easing: 'quintOut' })
.by(0.5, { position: new Vec3(0, -50) }, { easing: 'sineOut' })
.by(0.5, { position: new Vec3(0, 50), scale: new Vec3(-0.1, -0.1) }, { easing: 'quintOut' })
.by(0.5, { position: new Vec3(0, -50), scale: new Vec3(0.1, 0.1) }, { easing: 'sineOut' })
.union()
.repeatForever()
.start();
this.playTutorial();
}
protected update(dt: number): void {
this._timer += dt;
if (!this._showed && this._timer > TimeConfig.Tutorial) {
this._showed = true;
this.playTutorial();
}
}
private playTutorial() {
this._tapL.active = true;
this._tapR.active = true;
}
private stopTutorial() {
this._timer = 0;
this._showed = false;
this._tapL.active = false;
this._tapR.active = false;
}
private startGame() {
Tween.stopAllByTarget(this._tapL);
Tween.stopAllByTarget(this._tapR);
this.node.active = false;
this.stopTutorial();
this.node.off(Input.EventType.TOUCH_START, this.onTouchStart, this);
input.off(Input.EventType.KEY_UP, this.onKeyInputUpStart, this);
this.node.on(Input.EventType.TOUCH_START, this.onTouch, this);
input.on(Input.EventType.KEY_UP, this.onKeyInputUp, this);
GameManager.instance.play();
}
private onTouch(event: EventTouch) {
this.stopTutorial();
}
private onTouchStart(event: EventTouch) {
this.startGame();
}
private onKeyInputUp(event: EventKeyboard) {
private onKeyInputUpStart(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.KEY_A:
case KeyCode.ARROW_LEFT:
@ -58,4 +87,17 @@ export class TutorialController extends Component {
break;
}
}
private onKeyInputUp(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.KEY_A:
case KeyCode.ARROW_LEFT:
case KeyCode.KEY_D:
case KeyCode.ARROW_RIGHT:
this.stopTutorial();
break;
default:
break;
}
}
}

View File

@ -37,11 +37,13 @@ export class UIController extends Component {
EventManger.instance.on(GameEvent.BallOut, this.onBallOut, this);
EventManger.instance.on(GameEvent.GameStateChange, this.onGameStateChange, this);
EventManger.instance.on(GameEvent.MultiBall, this.onMultiBall, this);
EventManger.instance.on(GameEvent.BoosterActive, this.onBoosterActive, this);
EventManger.instance.on(GameEvent.BoosterDisable, this.onBoosterDisable, this);
EventManger.instance.on(GameEvent.TimeUpdate, this.onTimeUpdate, this);
this._eventLabel.string = '';
}
private async onScore(score: number, type: ScoreType) {
private async onScore(score: number, points: number, type: ScoreType) {
this._scoreLabel.string = `Score: ${score}`;
if (type == ScoreType.Goal) {
this.showEventLabel('GOAL!!!');
@ -102,13 +104,19 @@ export class UIController extends Component {
private onMultiBall(active: boolean) {
if (active) {
this._buffFx.play();
this.showEventLabel('MULTI BALL!!!');
} else {
this._buffFx.stop();
}
}
public onBoosterActive() {
this._buffFx.play();
this.showEventLabel('BOOSTER NAME!!!');
}
public onBoosterDisable() {
this._buffFx.stop();
}
public starGame() {
this._tutorialPanel.active = true;
this._startPanel.active = false;

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "a6918c93-d0ff-4b8c-8bbe-ed0ad1bc8c09",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "a6918c93-d0ff-4b8c-8bbe-ed0ad1bc8c09@6c48a",
"displayName": "Field_logo",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "a6918c93-d0ff-4b8c-8bbe-ed0ad1bc8c09",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "a6918c93-d0ff-4b8c-8bbe-ed0ad1bc8c09@f9941",
"displayName": "Field_logo",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0.5,
"offsetY": 0,
"trimX": 186,
"trimY": 200,
"width": 1059,
"height": 2203,
"rawWidth": 1430,
"rawHeight": 2603,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-529.5,
-1101.5,
0,
529.5,
-1101.5,
0,
-529.5,
1101.5,
0,
529.5,
1101.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
186,
2403,
1245,
2403,
186,
200,
1245,
200
],
"nuv": [
0.13006993006993006,
0.0768344218209758,
0.8706293706293706,
0.0768344218209758,
0.13006993006993006,
0.9231655781790242,
0.8706293706293706,
0.9231655781790242
],
"minPos": [
-529.5,
-1101.5,
0
],
"maxPos": [
529.5,
1101.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "a6918c93-d0ff-4b8c-8bbe-ed0ad1bc8c09@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "a6918c93-d0ff-4b8c-8bbe-ed0ad1bc8c09@f9941"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "1dddf217-fdc1-41fd-89cf-845ab15b0c28",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "1dddf217-fdc1-41fd-89cf-845ab15b0c28@6c48a",
"displayName": "left_thumb",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "1dddf217-fdc1-41fd-89cf-845ab15b0c28",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "1dddf217-fdc1-41fd-89cf-845ab15b0c28@f9941",
"displayName": "left_thumb",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 368,
"height": 446,
"rawWidth": 368,
"rawHeight": 446,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-184,
-223,
0,
184,
-223,
0,
-184,
223,
0,
184,
223,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
446,
368,
446,
0,
0,
368,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-184,
-223,
0
],
"maxPos": [
184,
223,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "1dddf217-fdc1-41fd-89cf-845ab15b0c28@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "1dddf217-fdc1-41fd-89cf-845ab15b0c28@f9941"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "e6e289e3-a472-4e09-987a-6c3589da2199",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "e6e289e3-a472-4e09-987a-6c3589da2199@6c48a",
"displayName": "right_thumb",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "e6e289e3-a472-4e09-987a-6c3589da2199",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "e6e289e3-a472-4e09-987a-6c3589da2199@f9941",
"displayName": "right_thumb",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 368,
"height": 446,
"rawWidth": 368,
"rawHeight": 446,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-184,
-223,
0,
184,
-223,
0,
-184,
223,
0,
184,
223,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
446,
368,
446,
0,
0,
368,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-184,
-223,
0
],
"maxPos": [
184,
223,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "e6e289e3-a472-4e09-987a-6c3589da2199@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "e6e289e3-a472-4e09-987a-6c3589da2199@f9941"
}
}

12
assets/_Game/TA.meta Normal file
View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "6ef2c231-c3cc-4e94-b9dc-a5b3ba2a4b36",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "ffffaaae-4958-4d1d-bc3c-c7e758cc4e2c",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "20a873c1-c140-462f-aafa-fa04e13bf80b",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,283 @@
[
{
"__type__": "cc.AnimationClip",
"_name": "CameraShake",
"_objFlags": 0,
"__editorExtras__": {
"embeddedPlayerGroups": []
},
"_native": "",
"sample": 60,
"speed": 1,
"wrapMode": 2,
"enableTrsBlending": false,
"_duration": 0.13333333333333333,
"_hash": 500763545,
"_tracks": [
{
"__id__": 1
}
],
"_exoticAnimation": null,
"_events": [],
"_embeddedPlayers": []
},
{
"__type__": "cc.animation.VectorTrack",
"_binding": {
"__type__": "cc.animation.TrackBinding",
"path": {
"__id__": 2
},
"proxy": null
},
"_channels": [
{
"__id__": 3
},
{
"__id__": 5
},
{
"__id__": 7
},
{
"__id__": 9
}
],
"_nComponents": 3
},
{
"__type__": "cc.animation.TrackPath",
"_paths": [
"position"
]
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 4
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.03333333333333333,
0.08333333333333333,
0.13333333333333333
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 0,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 3,
"rightTangent": -3.0238592624664307,
"rightTangentWeight": 1,
"leftTangent": 1.545461654663086,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": -5,
"rightTangent": 262.11065673828125,
"rightTangentWeight": 1,
"leftTangent": 262.11065673828125,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": -0.02518816478550434,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": -0.6280491948127747,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 6
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.03333333333333333,
0.08333333333333333,
0.13333333333333333
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 0,
"rightTangent": 177.6064453125,
"rightTangentWeight": 1,
"leftTangent": 177.6064453125,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 3,
"value": -5,
"rightTangent": 247.32598876953125,
"rightTangentWeight": 23.810287475585938,
"leftTangent": 247.32598876953125,
"leftTangentWeight": 0.06225259602069855,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 4.8728861808776855,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 0.04035128280520439,
"rightTangent": 106.99380493164062,
"rightTangentWeight": 1,
"leftTangent": 106.99380493164062,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 8
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.03333333333333333,
0.06666666666666667,
0.08333333333333333,
0.13333333333333333
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1000,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1000,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1000,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1000,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1000,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 10
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
}
]

View File

@ -0,0 +1,13 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "c812b4e7-55c7-4289-9952-1a5e7cfd4d56",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "CameraShake"
}
}

View File

@ -0,0 +1,231 @@
[
{
"__type__": "cc.AnimationClip",
"_name": "Flipper_L_glow",
"_objFlags": 0,
"__editorExtras__": {
"embeddedPlayerGroups": []
},
"_native": "",
"sample": 60,
"speed": 1,
"wrapMode": 2,
"enableTrsBlending": false,
"_duration": 0.8333333333333334,
"_hash": 500763545,
"_tracks": [
{
"__id__": 1
}
],
"_exoticAnimation": null,
"_events": [],
"_embeddedPlayers": []
},
{
"__type__": "cc.animation.VectorTrack",
"_binding": {
"__type__": "cc.animation.TrackBinding",
"path": {
"__id__": 2
},
"proxy": null
},
"_channels": [
{
"__id__": 3
},
{
"__id__": 5
},
{
"__id__": 7
},
{
"__id__": 9
}
],
"_nComponents": 3
},
{
"__type__": "cc.animation.TrackPath",
"_paths": [
"scale"
]
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 4
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.35,
0.8333333333333334
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 2,
"value": 0.8999999761581421,
"rightTangent": 0.03105590119957924,
"rightTangentWeight": 0.161077618598938,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 3,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 0.3166666626930237,
"leftTangent": 0.03105590119957924,
"leftTangentWeight": 0.161077618598938,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 1,
"value": 0.8999999761581421,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 0.3166666626930237,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 6
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.35,
0.8333333333333334
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 0.8999999761581421,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 0.8999999761581421,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 8
}
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
0.35,
0.8333333333333334
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 0,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 10
}
},
{
"__type__": "cc.RealCurve",
"_times": [],
"_values": [],
"preExtrapolation": 1,
"postExtrapolation": 1
}
]

View File

@ -0,0 +1,13 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "ea989e8b-bd1c-44e4-9c07-b44fe54f1b8b",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "Flipper_L_glow"
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "ebe9cfd2-3571-4ff3-8b4d-f335adfb4177",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "a233b277-545b-4ba5-9d42-9ee7da1dd017",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 1,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "110c1b20-2760-4600-b9fd-6e113ad1a1fe@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1 @@
{"ver":"1.0.20","importer":"material","imported":true,"uuid":"3cdb48d0-f8e9-4756-b6e7-6be5717bc7f3","files":[".json"],"subMetas":{},"userData":{}}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 1,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "d6596721-5025-4e65-8d84-32080043a52d@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1 @@
{"ver":"1.0.20","importer":"material","imported":true,"uuid":"ac003b29-5d22-471b-8a9c-2e92c7e40262","files":[".json"],"subMetas":{},"userData":{}}

View File

@ -0,0 +1,45 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 1,
"_defines": [
{},
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
},
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "669c7629-e25c-4018-9327-205276a1071a@6c48a",
"__expectedType__": "cc.Texture2D"
}
},
{}
]
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.20",
"importer": "material",
"imported": true,
"uuid": "7e8b3269-d74a-4398-beb0-8a4f821a17b9",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 0,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "32427c5b-a57b-4adc-b5de-3c21a30d06a9@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1 @@
{"ver":"1.0.20","importer":"material","imported":true,"uuid":"bfd8bc02-80c4-4383-8516-771a6431e2d6","files":[".json"],"subMetas":{},"userData":{}}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 1,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "d32ad627-39f1-48d7-89e4-9532c2d284e0@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1 @@
{"ver":"1.0.20","importer":"material","imported":true,"uuid":"b9d46c72-4da8-4cf2-83eb-c5a69782f8d6","files":[".json"],"subMetas":{},"userData":{}}

View File

@ -0,0 +1,45 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 1,
"_defines": [
{},
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
},
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "efb01e8b-2cb1-499e-bf68-42a810f22ef0@6c48a",
"__expectedType__": "cc.Texture2D"
}
},
{}
]
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.20",
"importer": "material",
"imported": true,
"uuid": "ae8ffc39-ed35-4990-9d88-e4d477d31c67",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 0,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "5fe8debf-af04-4112-b7be-5f13df297d04@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1 @@
{"ver":"1.0.20","importer":"material","imported":true,"uuid":"29df406c-6b44-4101-bc02-07386e09059f","files":[".json"],"subMetas":{},"userData":{}}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 0,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "435cbd16-621a-4d9d-84e9-834d9e388b3a@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1 @@
{"ver":"1.0.20","importer":"material","imported":true,"uuid":"5e4d56ac-5f20-42d8-8dee-7e2b491eaad6","files":[".json"],"subMetas":{},"userData":{}}

View File

@ -0,0 +1,33 @@
{
"__type__": "cc.Material",
"_name": "",
"_objFlags": 0,
"_native": "",
"_effectAsset": {
"__uuid__": "d1346436-ac96-4271-b863-1f4fdead95b0",
"__expectedType__": "cc.EffectAsset"
},
"_techIdx": 1,
"_defines": [
{}
],
"_states": [
{
"rasterizerState": {},
"depthStencilState": {},
"blendState": {
"targets": [
{}
]
}
}
],
"_props": [
{
"mainTexture": {
"__uuid__": "2a038be3-959b-404f-80ac-2c1223a1db30@6c48a",
"__expectedType__": "cc.Texture2D"
}
}
]
}

View File

@ -0,0 +1,11 @@
{
"ver": "1.0.20",
"importer": "material",
"imported": true,
"uuid": "d51b6d9d-3cc4-42fc-81b8-83cd6b964956",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "62b831dd-0b8c-4ffc-a685-1e5b5661454b",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "d4b596d2-38eb-4cd2-8462-feb128efc00e",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -1,7 +1,7 @@
[
{
"__type__": "cc.Prefab",
"_name": "Impact Particle",
"_name": "Buff_Particle",
"_objFlags": 0,
"_native": "",
"data": {
@ -12,7 +12,7 @@
},
{
"__type__": "cc.Node",
"_name": "Impact Particle",
"_name": "Buff_Particle",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
@ -23,20 +23,20 @@
"__id__": 2
},
{
"__id__": 4
"__id__": 64
},
{
"__id__": 6
"__id__": 66
}
],
"_prefab": {
"__id__": 65
"__id__": 68
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
"z": 10
},
"_lrot": {
"__type__": "cc.Quat",
@ -47,8 +47,8 @@
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 50,
"y": 50,
"x": 10,
"y": 10,
"z": 1
},
"_mobility": 0,
@ -62,7 +62,7 @@
"_id": ""
},
{
"__type__": "cc.UIMeshRenderer",
"__type__": "cc.ParticleSystem",
"_name": "",
"_objFlags": 0,
"node": {
@ -72,162 +72,114 @@
"__prefab": {
"__id__": 3
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "d7vlREn21O3pz+rhwBsmvE"
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 5
},
"_contentSize": {
"__type__": "cc.Size",
"width": 1,
"height": 1
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "14sgflQQxL3L23o+Yc4Phx"
},
{
"__type__": "cc.ParticleSystem",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 7
},
"_materials": [
{
"__uuid__": "9aa5d037-ec4c-4f5a-9513-4a423d576110",
"__uuid__": "989f9732-56aa-468a-9c87-d59761501c3e",
"__expectedType__": "cc.Material"
}
],
"_visFlags": 0,
"startColor": {
"__id__": 8
"__id__": 4
},
"scaleSpace": 1,
"startSize3D": false,
"startSizeX": {
"__id__": 9
"__id__": 5
},
"startSize": {
"__id__": 9
"__id__": 5
},
"startSizeY": {
"__id__": 10
"__id__": 6
},
"startSizeZ": {
"__id__": 11
"__id__": 7
},
"startSpeed": {
"__id__": 12
"__id__": 8
},
"startRotation3D": false,
"startRotationX": {
"__id__": 13
"__id__": 9
},
"startRotationY": {
"__id__": 14
"__id__": 10
},
"startRotationZ": {
"__id__": 15
"__id__": 11
},
"startRotation": {
"__id__": 15
"__id__": 11
},
"startDelay": {
"__id__": 16
"__id__": 12
},
"startLifetime": {
"__id__": 17
"__id__": 13
},
"duration": 1,
"loop": false,
"duration": 5,
"loop": true,
"simulationSpeed": 1,
"playOnAwake": false,
"gravityModifier": {
"__id__": 18
"__id__": 14
},
"rateOverTime": {
"__id__": 19
"__id__": 15
},
"rateOverDistance": {
"__id__": 20
"__id__": 16
},
"bursts": [
{
"__id__": 21
}
],
"bursts": [],
"_renderCulling": false,
"_cullingMode": 0,
"_aabbHalfX": 0,
"_aabbHalfY": 0,
"_aabbHalfZ": 0,
"_cullingMode": 1,
"_aabbHalfX": 15.480704262604377,
"_aabbHalfY": 15.47013261447455,
"_aabbHalfZ": 2.249856228336765,
"_dataCulling": false,
"enableCulling": false,
"_colorOverLifetimeModule": {
"__id__": 23
"__id__": 17
},
"_shapeModule": {
"__id__": 28
"__id__": 27
},
"_sizeOvertimeModule": {
"__id__": 30
"__id__": 29
},
"_velocityOvertimeModule": {
"__id__": 36
"__id__": 35
},
"_forceOvertimeModule": {
"__id__": 41
"__id__": 40
},
"_limitVelocityOvertimeModule": {
"__id__": 45
"__id__": 44
},
"_rotationOvertimeModule": {
"__id__": 50
"__id__": 49
},
"_textureAnimationModule": {
"__id__": 54
"__id__": 53
},
"_noiseModule": {
"__id__": 58
"__id__": 57
},
"_trailModule": {
"__id__": 59
"__id__": 58
},
"renderer": {
"__id__": 64
"__id__": 63
},
"_prewarm": false,
"_capacity": 100,
"_simulationSpace": 1,
"_simulationSpace": 0,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "e5RR/Euk5E1aiVQtB8bWtU"
"fileId": "e7RGndsM1GC5BOylb+tbsg"
},
{
"__type__": "cc.GradientRange",
@ -242,8 +194,9 @@
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1.5,
"mode": 3,
"constantMin": 0.5,
"constantMax": 4,
"multiplier": 1
},
{
@ -260,8 +213,9 @@
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 5,
"mode": 3,
"constantMin": 2.2,
"constantMax": 5,
"multiplier": 1
},
{
@ -278,8 +232,9 @@
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"mode": 3,
"constantMin": 0,
"constantMax": 6.283185307179586,
"multiplier": 1
},
{
@ -288,98 +243,142 @@
"constant": 0,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0.2,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"multiplier": 1
},
{
"__type__": "cc.Burst",
"_time": 0,
"_repeatCount": 1,
"repeatInterval": 0.01,
"count": {
"__id__": 22
}
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 1,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 15,
"multiplier": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"multiplier": 1
},
{
"__type__": "cc.ColorOvertimeModule",
"_enable": false,
"_enable": true,
"color": {
"__id__": 24
"__id__": 18
}
},
{
"__type__": "cc.GradientRange",
"_mode": 1,
"gradient": {
"__id__": 25
"__id__": 19
}
},
{
"__type__": "cc.Gradient",
"colorKeys": [],
"alphaKeys": [
"colorKeys": [
{
"__id__": 26
"__id__": 20
},
{
"__id__": 27
"__id__": 21
},
{
"__id__": 22
}
],
"alphaKeys": [
{
"__id__": 23
},
{
"__id__": 24
},
{
"__id__": 25
},
{
"__id__": 26
}
],
"mode": 0
},
{
"__type__": "cc.ColorKey",
"color": {
"__type__": "cc.Color",
"r": 201,
"g": 206,
"b": 144,
"a": 255
},
"time": 0.16294642857142858
},
{
"__type__": "cc.ColorKey",
"color": {
"__type__": "cc.Color",
"r": 255,
"g": 0,
"b": 0,
"a": 255
},
"time": 0.45535714285714285
},
{
"__type__": "cc.ColorKey",
"color": {
"__type__": "cc.Color",
"r": 235,
"g": 255,
"b": 0,
"a": 255
},
"time": 1
},
{
"__type__": "cc.AlphaKey",
"alpha": 255,
"alpha": 0,
"time": 0
},
{
"__type__": "cc.AlphaKey",
"alpha": 100,
"alpha": 255,
"time": 0.28125
},
{
"__type__": "cc.AlphaKey",
"alpha": 255,
"time": 0.7589285714285715
},
{
"__type__": "cc.AlphaKey",
"alpha": 0,
"time": 1
},
{
"__type__": "cc.ShapeModule",
"_enable": false,
"_shapeType": 2,
"shapeType": 2,
"emitFrom": 0,
"_enable": true,
"_shapeType": 1,
"shapeType": 1,
"emitFrom": 3,
"alignToDirection": false,
"randomDirectionAmount": 0,
"sphericalDirectionAmount": 0,
"randomPositionAmount": 0,
"radius": 1,
"radius": 4,
"radiusThickness": 1,
"arcMode": 0,
"arcSpread": 0,
"arcSpeed": {
"__id__": 29
"__id__": 28
},
"length": 5,
"boxThickness": {
@ -420,23 +419,23 @@
"_enable": true,
"separateAxes": false,
"size": {
"__id__": 31
"__id__": 30
},
"x": {
"__id__": 33
"__id__": 32
},
"y": {
"__id__": 34
"__id__": 33
},
"z": {
"__id__": 35
"__id__": 34
}
},
{
"__type__": "cc.CurveRange",
"mode": 1,
"spline": {
"__id__": 32
"__id__": 31
},
"multiplier": 1
},
@ -444,6 +443,7 @@
"__type__": "cc.RealCurve",
"_times": [
0,
0.4512820512820513,
1
],
"_values": [
@ -452,9 +452,9 @@
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 0,
"rightTangent": 0,
"rightTangent": 6.901234567901234,
"rightTangentWeight": 1,
"leftTangent": 0,
"leftTangent": 6.901234567901234,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
@ -463,10 +463,22 @@
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 1,
"value": 0.9814814814814815,
"rightTangent": 0,
"rightTangentWeight": 1,
"rightTangentWeight": 0,
"leftTangent": 0,
"leftTangentWeight": 0,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 0,
"rightTangent": -0.9388888888888892,
"rightTangentWeight": 1,
"leftTangent": -0.9388888888888892,
"leftTangentWeight": 1,
"easingMethod": 0,
"__editorExtras__": null
@ -497,16 +509,16 @@
"__type__": "cc.VelocityOvertimeModule",
"_enable": false,
"x": {
"__id__": 37
"__id__": 36
},
"y": {
"__id__": 38
"__id__": 37
},
"z": {
"__id__": 39
"__id__": 38
},
"speedModifier": {
"__id__": 40
"__id__": 39
},
"space": 1
},
@ -538,13 +550,13 @@
"__type__": "cc.ForceOvertimeModule",
"_enable": false,
"x": {
"__id__": 42
"__id__": 41
},
"y": {
"__id__": 43
"__id__": 42
},
"z": {
"__id__": 44
"__id__": 43
},
"space": 1
},
@ -570,16 +582,16 @@
"__type__": "cc.LimitVelocityOvertimeModule",
"_enable": false,
"limitX": {
"__id__": 46
"__id__": 45
},
"limitY": {
"__id__": 47
"__id__": 46
},
"limitZ": {
"__id__": 48
"__id__": 47
},
"limit": {
"__id__": 49
"__id__": 48
},
"dampen": 3,
"separateAxes": false,
@ -611,16 +623,16 @@
},
{
"__type__": "cc.RotationOvertimeModule",
"_enable": false,
"_enable": true,
"_separateAxes": false,
"x": {
"__id__": 51
"__id__": 50
},
"y": {
"__id__": 52
"__id__": 51
},
"z": {
"__id__": 53
"__id__": 52
}
},
{
@ -637,8 +649,9 @@
},
{
"__type__": "cc.CurveRange",
"mode": 0,
"constant": 0,
"mode": 3,
"constantMin": -6.283185307179586,
"constantMax": 0.10966226576191991,
"multiplier": 1
},
{
@ -651,10 +664,10 @@
"_mode": 0,
"animation": 0,
"frameOverTime": {
"__id__": 55
"__id__": 54
},
"startFrame": {
"__id__": 57
"__id__": 56
},
"cycleCount": 0,
"_flipU": 0,
@ -667,7 +680,7 @@
"__type__": "cc.CurveRange",
"mode": 1,
"spline": {
"__id__": 56
"__id__": 55
},
"multiplier": 1
},
@ -734,25 +747,25 @@
"_enable": false,
"mode": 0,
"lifeTime": {
"__id__": 60
"__id__": 59
},
"_minParticleDistance": 0.1,
"existWithParticles": true,
"textureMode": 0,
"widthFromParticle": true,
"widthRatio": {
"__id__": 61
"__id__": 60
},
"colorFromParticle": false,
"colorOverTrail": {
"__id__": 62
"__id__": 61
},
"colorOvertime": {
"__id__": 63
"__id__": 62
},
"_space": 0,
"_particleSystem": {
"__id__": 6
"__id__": 2
}
},
{
@ -791,22 +804,66 @@
},
{
"__type__": "cc.ParticleSystemRenderer",
"_renderMode": 3,
"_renderMode": 0,
"_velocityScale": 1,
"_lengthScale": 1,
"_mesh": null,
"_cpuMaterial": {
"__uuid__": "9aa5d037-ec4c-4f5a-9513-4a423d576110",
"__uuid__": "989f9732-56aa-468a-9c87-d59761501c3e",
"__expectedType__": "cc.Material"
},
"_gpuMaterial": null,
"_mainTexture": {
"__uuid__": "55cef4ac-5e35-45d5-90f5-b50f6dcefca7@6c48a",
"__uuid__": "435cbd16-621a-4d9d-84e9-834d9e388b3a@6c48a",
"__expectedType__": "cc.Texture2D"
},
"_useGPU": false,
"_alignSpace": 2
},
{
"__type__": "cc.UIMeshRenderer",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 65
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "55Jcvslq5CSpd3YHi88v3P"
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 67
},
"_contentSize": {
"__type__": "cc.Size",
"width": 100,
"height": 100
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "e2Z+/Z8OFKd7lewPEaVD2r"
},
{
"__type__": "cc.PrefabInfo",
"root": {
@ -815,7 +872,7 @@
"asset": {
"__id__": 0
},
"fileId": "02Cq1VgJZE6L0Djr0XraDM",
"fileId": "67xZ2cRkJFAr/RCUJZ4Wsx",
"instance": null,
"targetOverrides": null
}

View File

@ -2,12 +2,12 @@
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "c7549312-ab7b-4974-8863-1a55c119c34f",
"uuid": "e14fcc1f-f971-42d3-9b4c-b18518610c85",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Buff Particle"
"syncNodeName": "Buff_Particle"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -2,12 +2,12 @@
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "e4f226d3-8b68-42b8-8bf0-490b8d5765c4",
"uuid": "246eb0a7-6e50-4bf0-8025-3edde8adaefe",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Impact Particle"
"syncNodeName": "EffectX2"
}
}

View File

@ -1,7 +1,7 @@
[
{
"__type__": "cc.Prefab",
"_name": "Goal Particle",
"_name": "Goal Particle-001",
"_objFlags": 0,
"_native": "",
"data": {
@ -12,7 +12,7 @@
},
{
"__type__": "cc.Node",
"_name": "Goal Particle",
"_name": "Goal Particle-001",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
@ -30,7 +30,7 @@
}
],
"_prefab": {
"__id__": 66
"__id__": 60
},
"_lpos": {
"__type__": "cc.Vec3",
@ -129,55 +129,55 @@
"scaleSpace": 1,
"startSize3D": true,
"startSizeX": {
"__id__": 14
"__id__": 9
},
"startSize": {
"__id__": 14
"__id__": 9
},
"startSizeY": {
"__id__": 15
"__id__": 10
},
"startSizeZ": {
"__id__": 16
"__id__": 11
},
"startSpeed": {
"__id__": 17
"__id__": 12
},
"startRotation3D": true,
"startRotationX": {
"__id__": 18
"__id__": 13
},
"startRotationY": {
"__id__": 19
"__id__": 14
},
"startRotationZ": {
"__id__": 20
"__id__": 15
},
"startRotation": {
"__id__": 20
"__id__": 15
},
"startDelay": {
"__id__": 21
"__id__": 16
},
"startLifetime": {
"__id__": 22
"__id__": 17
},
"duration": 1.5,
"loop": false,
"simulationSpeed": 1,
"playOnAwake": false,
"gravityModifier": {
"__id__": 23
"__id__": 18
},
"rateOverTime": {
"__id__": 24
"__id__": 19
},
"rateOverDistance": {
"__id__": 25
"__id__": 20
},
"bursts": [
{
"__id__": 26
"__id__": 21
}
],
"_renderCulling": false,
@ -188,37 +188,37 @@
"_dataCulling": false,
"enableCulling": false,
"_colorOverLifetimeModule": {
"__id__": 28
"__id__": 23
},
"_shapeModule": {
"__id__": 30
"__id__": 25
},
"_sizeOvertimeModule": {
"__id__": 32
"__id__": 27
},
"_velocityOvertimeModule": {
"__id__": 37
"__id__": 32
},
"_forceOvertimeModule": {
"__id__": 42
"__id__": 37
},
"_limitVelocityOvertimeModule": {
"__id__": 46
"__id__": 41
},
"_rotationOvertimeModule": {
"__id__": 51
"__id__": 46
},
"_textureAnimationModule": {
"__id__": 55
"__id__": 50
},
"_noiseModule": {
"__id__": 59
"__id__": 53
},
"_trailModule": {
"__id__": 60
"__id__": 54
},
"renderer": {
"__id__": 65
"__id__": 59
},
"_prewarm": false,
"_capacity": 100,
@ -231,68 +231,14 @@
},
{
"__type__": "cc.GradientRange",
"_mode": 4,
"gradient": {
"__id__": 9
}
},
{
"__type__": "cc.Gradient",
"colorKeys": [
{
"__id__": 10
},
{
"__id__": 11
},
{
"__id__": 12
}
],
"alphaKeys": [
{
"__id__": 13
}
],
"mode": 0
},
{
"__type__": "cc.ColorKey",
"_mode": 0,
"color": {
"__type__": "cc.Color",
"r": 255,
"g": 0,
"b": 0,
"a": 255
},
"time": 0.25
},
{
"__type__": "cc.ColorKey",
"color": {
"__type__": "cc.Color",
"r": 0,
"g": 255,
"b": 51,
"a": 255
},
"time": 0.5
},
{
"__type__": "cc.ColorKey",
"color": {
"__type__": "cc.Color",
"r": 0,
"g": 173,
"b": 255,
"a": 255
},
"time": 0.75
},
{
"__type__": "cc.AlphaKey",
"alpha": 255,
"time": 0
}
},
{
"__type__": "cc.CurveRange",
@ -379,7 +325,7 @@
"_repeatCount": 1,
"repeatInterval": 0.01,
"count": {
"__id__": 27
"__id__": 22
}
},
{
@ -392,7 +338,7 @@
"__type__": "cc.ColorOvertimeModule",
"_enable": false,
"color": {
"__id__": 29
"__id__": 24
}
},
{
@ -409,8 +355,8 @@
{
"__type__": "cc.ShapeModule",
"_enable": true,
"_shapeType": 4,
"shapeType": 4,
"_shapeType": 3,
"shapeType": 3,
"emitFrom": 3,
"alignToDirection": false,
"randomDirectionAmount": 0,
@ -421,7 +367,7 @@
"arcMode": 0,
"arcSpread": 0,
"arcSpeed": {
"__id__": 31
"__id__": 26
},
"length": 5,
"boxThickness": {
@ -462,16 +408,16 @@
"_enable": false,
"separateAxes": false,
"size": {
"__id__": 33
"__id__": 28
},
"x": {
"__id__": 34
"__id__": 29
},
"y": {
"__id__": 35
"__id__": 30
},
"z": {
"__id__": 36
"__id__": 31
}
},
{
@ -502,16 +448,16 @@
"__type__": "cc.VelocityOvertimeModule",
"_enable": true,
"x": {
"__id__": 38
"__id__": 33
},
"y": {
"__id__": 39
"__id__": 34
},
"z": {
"__id__": 40
"__id__": 35
},
"speedModifier": {
"__id__": 41
"__id__": 36
},
"space": 1
},
@ -543,13 +489,13 @@
"__type__": "cc.ForceOvertimeModule",
"_enable": false,
"x": {
"__id__": 43
"__id__": 38
},
"y": {
"__id__": 44
"__id__": 39
},
"z": {
"__id__": 45
"__id__": 40
},
"space": 1
},
@ -575,16 +521,16 @@
"__type__": "cc.LimitVelocityOvertimeModule",
"_enable": false,
"limitX": {
"__id__": 47
"__id__": 42
},
"limitY": {
"__id__": 48
"__id__": 43
},
"limitZ": {
"__id__": 49
"__id__": 44
},
"limit": {
"__id__": 50
"__id__": 45
},
"dampen": 3,
"separateAxes": false,
@ -616,16 +562,16 @@
},
{
"__type__": "cc.RotationOvertimeModule",
"_enable": true,
"_enable": false,
"_separateAxes": true,
"x": {
"__id__": 52
"__id__": 47
},
"y": {
"__id__": 53
"__id__": 48
},
"z": {
"__id__": 54
"__id__": 49
}
},
{
@ -651,20 +597,20 @@
},
{
"__type__": "cc.TextureAnimationModule",
"_enable": false,
"_numTilesX": 0,
"numTilesX": 0,
"_numTilesY": 0,
"numTilesY": 0,
"_enable": true,
"_numTilesX": 3,
"numTilesX": 3,
"_numTilesY": 3,
"numTilesY": 3,
"_mode": 0,
"animation": 0,
"frameOverTime": {
"__id__": 56
"__id__": 51
},
"startFrame": {
"__id__": 58
"__id__": 52
},
"cycleCount": 0,
"cycleCount": 1,
"_flipU": 0,
"_flipV": 0,
"_uvChannelMask": -1,
@ -673,47 +619,11 @@
},
{
"__type__": "cc.CurveRange",
"mode": 1,
"spline": {
"__id__": 57
},
"mode": 3,
"constantMin": 0,
"constantMax": 9,
"multiplier": 1
},
{
"__type__": "cc.RealCurve",
"_times": [
0,
1
],
"_values": [
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 0,
"leftTangent": 0,
"leftTangentWeight": 0,
"easingMethod": 0,
"__editorExtras__": null
},
{
"__type__": "cc.RealKeyframeValue",
"interpolationMode": 2,
"tangentWeightMode": 0,
"value": 1,
"rightTangent": 0,
"rightTangentWeight": 0,
"leftTangent": 0,
"leftTangentWeight": 0,
"easingMethod": 0,
"__editorExtras__": null
}
],
"preExtrapolation": 1,
"postExtrapolation": 1
},
{
"__type__": "cc.CurveRange",
"mode": 0,
@ -742,21 +652,21 @@
"_enable": false,
"mode": 0,
"lifeTime": {
"__id__": 61
"__id__": 55
},
"_minParticleDistance": 0.1,
"existWithParticles": true,
"textureMode": 0,
"widthFromParticle": true,
"widthRatio": {
"__id__": 62
"__id__": 56
},
"colorFromParticle": false,
"colorOverTrail": {
"__id__": 63
"__id__": 57
},
"colorOvertime": {
"__id__": 64
"__id__": 58
},
"_space": 0,
"_particleSystem": {
@ -808,7 +718,10 @@
"__expectedType__": "cc.Material"
},
"_gpuMaterial": null,
"_mainTexture": null,
"_mainTexture": {
"__uuid__": "2a038be3-959b-404f-80ac-2c1223a1db30@6c48a",
"__expectedType__": "cc.Texture2D"
},
"_useGPU": false,
"_alignSpace": 2
},

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "cd5f9bbe-5a25-4a39-9632-20ca07a4d067",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Goal Particle-001"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "f54a7c19-37d5-4255-9336-f6df0e956be7",
"uuid": "e96204d7-e516-46d5-8e80-f1f5fda61677",
"files": [
".json"
],

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "018b85ed-f07a-4f26-b29c-7c3eb28cc634",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Impact Particle-001"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "c5e75294-5ee5-4e7a-8192-d1655a94811e",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "PorttEffect"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "7afbc379-62e2-4721-b6d4-be47b00b6db2",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Smoke"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "f6a1c4a1-bf0b-40b2-8b18-6443ae8021d0",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "Trail"
}
}

View File

@ -0,0 +1,13 @@
{
"ver": "1.1.43",
"importer": "prefab",
"imported": true,
"uuid": "65ac0d84-803c-4033-a26d-d045b44256b2",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "fire"
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "bdbd3f6f-8890-4398-a4d0-1817c5254f17",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "da08b45c-8fb6-4efb-84eb-fabed619fc15",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "f2a0ff7a-47a7-4b3d-b249-43148476d1da",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "f2a0ff7a-47a7-4b3d-b249-43148476d1da@6c48a",
"displayName": "Flipper_L_glow",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "f2a0ff7a-47a7-4b3d-b249-43148476d1da",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "f2a0ff7a-47a7-4b3d-b249-43148476d1da@f9941",
"displayName": "Flipper_L_glow",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0.5,
"trimX": 4,
"trimY": 17,
"width": 248,
"height": 221,
"rawWidth": 256,
"rawHeight": 256,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-124,
-110.5,
0,
124,
-110.5,
0,
-124,
110.5,
0,
124,
110.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
4,
239,
252,
239,
4,
18,
252,
18
],
"nuv": [
0.015625,
0.0703125,
0.984375,
0.0703125,
0.015625,
0.93359375,
0.984375,
0.93359375
],
"minPos": [
-124,
-110.5,
0
],
"maxPos": [
124,
110.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "f2a0ff7a-47a7-4b3d-b249-43148476d1da@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "f2a0ff7a-47a7-4b3d-b249-43148476d1da@f9941"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "32427c5b-a57b-4adc-b5de-3c21a30d06a9",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "32427c5b-a57b-4adc-b5de-3c21a30d06a9@6c48a",
"displayName": "atom",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "32427c5b-a57b-4adc-b5de-3c21a30d06a9",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "32427c5b-a57b-4adc-b5de-3c21a30d06a9@f9941",
"displayName": "atom",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 31,
"height": 31,
"rawWidth": 31,
"rawHeight": 31,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-15.5,
-15.5,
0,
15.5,
-15.5,
0,
-15.5,
15.5,
0,
15.5,
15.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
0,
31,
31,
31,
0,
0,
31,
0
],
"nuv": [
0,
0,
1,
0,
0,
1,
1,
1
],
"minPos": [
-15.5,
-15.5,
0
],
"maxPos": [
15.5,
15.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "32427c5b-a57b-4adc-b5de-3c21a30d06a9@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "32427c5b-a57b-4adc-b5de-3c21a30d06a9@f9941"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "e8c8eb8b-f38a-4906-9e03-327caf2c18c7",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "e8c8eb8b-f38a-4906-9e03-327caf2c18c7@6c48a",
"displayName": "circle",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "e8c8eb8b-f38a-4906-9e03-327caf2c18c7",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "e8c8eb8b-f38a-4906-9e03-327caf2c18c7@f9941",
"displayName": "circle",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": -2,
"trimX": 14,
"trimY": 16,
"width": 228,
"height": 228,
"rawWidth": 256,
"rawHeight": 256,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-114,
-114,
0,
114,
-114,
0,
-114,
114,
0,
114,
114,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
14,
240,
242,
240,
14,
12,
242,
12
],
"nuv": [
0.0546875,
0.046875,
0.9453125,
0.046875,
0.0546875,
0.9375,
0.9453125,
0.9375
],
"minPos": [
-114,
-114,
0
],
"maxPos": [
114,
114,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "e8c8eb8b-f38a-4906-9e03-327caf2c18c7@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "e8c8eb8b-f38a-4906-9e03-327caf2c18c7@f9941"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,134 @@
{
"ver": "1.0.25",
"importer": "image",
"imported": true,
"uuid": "110c1b20-2760-4600-b9fd-6e113ad1a1fe",
"files": [
".json",
".png"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "110c1b20-2760-4600-b9fd-6e113ad1a1fe@6c48a",
"displayName": "cloud_2x2_hardshadow",
"id": "6c48a",
"name": "texture",
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"imageUuidOrDatabaseUri": "110c1b20-2760-4600-b9fd-6e113ad1a1fe",
"isUuid": true,
"visible": false,
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"anisotropy": 0
},
"ver": "1.0.22",
"imported": true,
"files": [
".json"
],
"subMetas": {}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "110c1b20-2760-4600-b9fd-6e113ad1a1fe@f9941",
"displayName": "cloud_2x2_hardshadow",
"id": "f9941",
"name": "spriteFrame",
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": -6.5,
"offsetY": 10.5,
"trimX": 40,
"trimY": 34,
"width": 419,
"height": 423,
"rawWidth": 512,
"rawHeight": 512,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"packable": true,
"pixelsToUnit": 100,
"pivotX": 0.5,
"pivotY": 0.5,
"meshType": 0,
"vertices": {
"rawPosition": [
-209.5,
-211.5,
0,
209.5,
-211.5,
0,
-209.5,
211.5,
0,
209.5,
211.5,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
40,
478,
459,
478,
40,
55,
459,
55
],
"nuv": [
0.078125,
0.107421875,
0.896484375,
0.107421875,
0.078125,
0.93359375,
0.896484375,
0.93359375
],
"minPos": [
-209.5,
-211.5,
0
],
"maxPos": [
209.5,
211.5,
0
]
},
"isUuid": true,
"imageUuidOrDatabaseUri": "110c1b20-2760-4600-b9fd-6e113ad1a1fe@6c48a",
"atlasUuid": ""
},
"ver": "1.0.11",
"imported": true,
"files": [
".json"
],
"subMetas": {}
}
},
"userData": {
"type": "sprite-frame",
"fixAlphaTransparencyArtifacts": true,
"hasAlpha": true,
"redirect": "110c1b20-2760-4600-b9fd-6e113ad1a1fe@f9941"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Some files were not shown because too many files have changed in this diff Show More