Closed fanmingfei closed 1 year ago
class Player extends NetworkComponent { // 创建用户的血量 这是一个和服务端同步的属性 @networkVarible networkHP: NetworkVariable<number> = new NetworkVariable(100) // 创建用户的位置 这是一个和服务端同步的属性 @networkVarible networkPosition: NetworkVariable<Vector2> = new NetworkVariable({ x: 0, y: 0 }); // 只有客户端按键盘的时候会调用move方法 public move() { // 这里告诉服务端下一步的位置 sendNewPos({ x: this.networkPosition.value.x + 10, y: this.networkPosition.value.y + 10 }) } // 告诉服务端我要移动位置了 @serverRPC sendNewPos(pos) { // 服务端来修改当前的位置 this.networkPosition.value = pos } // 在用户攻击别人的时候调用,告诉服务端我要揍人了 @serverRPC public attackSomeone(gameObject, hp) { // 这里直接调用被攻击的游戏对象的attack方法 gameObject.getComponent(Player).attack(hp) } attack(hp) { this.networkHP.value -= hp this.networkHP.value = Math.max(0, this.networkHP.value) if (this.networkHP.value === 0) { this.die() } } // 客户端接收死亡事件 @clientRPC die() { alert('游戏结束') } // 每帧同步网络位置 update() { this.gameObject.position = this.networkPosition.value } }