64 lines
2.2 KiB
TypeScript
64 lines
2.2 KiB
TypeScript
import { Component, EventKeyboard, macro, misc, SystemEvent, systemEvent, _decorator } from 'cc';
|
|
import AnimatorAnimation from '../../animator/AnimatorAnimation';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('Sheep')
|
|
export class Sheep extends Component {
|
|
|
|
public _animator: AnimatorAnimation = null!;
|
|
public speed: number = 0;
|
|
|
|
protected start() {
|
|
this._animator = this.getComponent(AnimatorAnimation)!;
|
|
|
|
systemEvent.on(SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
|
|
systemEvent.on(SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
|
|
}
|
|
|
|
protected update(dt: number) {
|
|
let delt = this._animator.curStateName === 'sheep_hit' ? 0 : this.speed * -this._animator.node.scale.x * dt;
|
|
let x = misc.clampf(this._animator.node.position.x + delt, -1000, 1000);
|
|
this._animator.node.setPosition(x, this._animator.node.position.y, this._animator.node.position.z);
|
|
}
|
|
|
|
protected lateUpdate() {
|
|
this._animator.setNumber('speed', this.speed);
|
|
this._animator.manualUpdate();
|
|
}
|
|
|
|
protected onDestroy() {
|
|
systemEvent.off(SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
|
|
systemEvent.off(SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
|
|
}
|
|
|
|
private onKeyDown(event: EventKeyboard) {
|
|
let code: number = event.keyCode;
|
|
switch (code) {
|
|
case macro.KEY.left:
|
|
this._animator.node.setScale(1, this._animator.node.scale.y, this._animator.node.scale.z);
|
|
this.speed = 100;
|
|
break;
|
|
case macro.KEY.right:
|
|
this._animator.node.setScale(-1, this._animator.node.scale.y, this._animator.node.scale.z);
|
|
this.speed = 100;
|
|
break;
|
|
case macro.KEY.k:
|
|
this._animator.setTrigger('hit');
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private onKeyUp(event: EventKeyboard) {
|
|
let code: number = event.keyCode;
|
|
switch (code) {
|
|
case macro.KEY.left:
|
|
case macro.KEY.right:
|
|
this.speed = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|