Add shooty
This commit is contained in:
parent
48f02df34c
commit
7d60350142
@ -44,7 +44,6 @@ GameObject:
|
|||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 1865991757674780053}
|
- component: {fileID: 1865991757674780053}
|
||||||
- component: {fileID: 2075495528035690810}
|
- component: {fileID: 2075495528035690810}
|
||||||
- component: {fileID: 6867077562160249920}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: GunRoot
|
m_Name: GunRoot
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -64,8 +63,8 @@ Transform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 8204020546429986303}
|
- {fileID: 8204020546429986303}
|
||||||
m_Father: {fileID: 7391558912382528812}
|
m_Father: {fileID: 3811958100146932696}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!95 &2075495528035690810
|
--- !u!95 &2075495528035690810
|
||||||
Animator:
|
Animator:
|
||||||
@ -86,19 +85,6 @@ Animator:
|
|||||||
m_HasTransformHierarchy: 1
|
m_HasTransformHierarchy: 1
|
||||||
m_AllowConstantClipSamplingOptimization: 1
|
m_AllowConstantClipSamplingOptimization: 1
|
||||||
m_KeepAnimatorControllerStateOnDisable: 0
|
m_KeepAnimatorControllerStateOnDisable: 0
|
||||||
--- !u!114 &6867077562160249920
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2071588178488902664}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: c0e8b530a9e9275419a275e5557a0420, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
Speed: 10
|
|
||||||
--- !u!1 &2093411826205058927
|
--- !u!1 &2093411826205058927
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -194,6 +180,51 @@ BoxCollider:
|
|||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Size: {x: 1, y: 1, z: 1}
|
m_Size: {x: 1, y: 1, z: 1}
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &2970260390919355544
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3811958100146932696}
|
||||||
|
- component: {fileID: 4000144568201082722}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: GunRootAboveAnimator
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3811958100146932696
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2970260390919355544}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1865991757674780053}
|
||||||
|
m_Father: {fileID: 7391558912382528812}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4000144568201082722
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2970260390919355544}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c0e8b530a9e9275419a275e5557a0420, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
Speed: 10
|
||||||
--- !u!1 &7391558911651855222
|
--- !u!1 &7391558911651855222
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -445,7 +476,7 @@ Transform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 7391558911651855223}
|
- {fileID: 7391558911651855223}
|
||||||
- {fileID: 7391558913556166742}
|
- {fileID: 7391558913556166742}
|
||||||
- {fileID: 1865991757674780053}
|
- {fileID: 3811958100146932696}
|
||||||
m_Father: {fileID: 7391558912167870012}
|
m_Father: {fileID: 7391558912167870012}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -576,7 +607,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
CoyoteTime: 0.2
|
CoyoteTime: 0.2
|
||||||
CoyoteTimePingBias: 0
|
PingBias: 0
|
||||||
UpdateFrequency: 30
|
UpdateFrequency: 30
|
||||||
MoveStyles:
|
MoveStyles:
|
||||||
- {fileID: 11400000, guid: 550df8ac62d76a64a8c621ea6b32398f, type: 2}
|
- {fileID: 11400000, guid: 550df8ac62d76a64a8c621ea6b32398f, type: 2}
|
||||||
@ -588,7 +619,7 @@ MonoBehaviour:
|
|||||||
Lerpables:
|
Lerpables:
|
||||||
- {fileID: 2566772175078312154}
|
- {fileID: 2566772175078312154}
|
||||||
- {fileID: 1798037817325599949}
|
- {fileID: 1798037817325599949}
|
||||||
- {fileID: 6867077562160249920}
|
- {fileID: 4000144568201082722}
|
||||||
Pitch: 0
|
Pitch: 0
|
||||||
Yaw: 0
|
Yaw: 0
|
||||||
BodyYaw: 0
|
BodyYaw: 0
|
||||||
|
@ -142,6 +142,11 @@ namespace NeonTea.Quakeball.Networking.Instances {
|
|||||||
case PlayerAction.Jump:
|
case PlayerAction.Jump:
|
||||||
Players[action.PlayerId].Controlled.Jump();
|
Players[action.PlayerId].Controlled.Jump();
|
||||||
break;
|
break;
|
||||||
|
case PlayerAction.Shoot:
|
||||||
|
ShootData shootData = (ShootData)action.Serializable;
|
||||||
|
HandleSyncPckt(shootData.SyncPckt);
|
||||||
|
Players[action.PlayerId].Controlled.Shoot();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,10 +166,10 @@ namespace NeonTea.Quakeball.Networking.Instances {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LocalPlayerAction(PlayerAction action) {
|
public override void LocalPlayerAction(PlayerAction action, Serializable serializable = null) {
|
||||||
if (SelfIdentified && Server != null) {
|
if (SelfIdentified && Server != null) {
|
||||||
PlayerActionPckt jump = new PlayerActionPckt(action);
|
PlayerActionPckt actionPckt = new PlayerActionPckt(action, serializable);
|
||||||
Peer.SendReliable(Server.uid, jump);
|
Peer.SendReliable(Server.uid, actionPckt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ namespace NeonTea.Quakeball.Networking.Instances {
|
|||||||
|
|
||||||
public abstract void UpdateLocalPlayer();
|
public abstract void UpdateLocalPlayer();
|
||||||
public abstract void SendPlayerSync();
|
public abstract void SendPlayerSync();
|
||||||
public abstract void LocalPlayerAction(PlayerAction action);
|
public abstract void LocalPlayerAction(PlayerAction action, Serializable serializable = null);
|
||||||
|
|
||||||
public virtual void Update() { }
|
public virtual void Update() { }
|
||||||
|
|
||||||
|
@ -157,6 +157,17 @@ namespace NeonTea.Quakeball.Networking.Instances {
|
|||||||
SendReliableToAll(action);
|
SendReliableToAll(action);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case PlayerAction.Shoot:
|
||||||
|
ShootData shootData = (ShootData)action.Serializable;
|
||||||
|
HandleSyncPckt(uid, shootData.SyncPckt);
|
||||||
|
Players[uid].Controlled.Shoot();
|
||||||
|
|
||||||
|
action.PlayerId = uid;
|
||||||
|
NetPlayer Player = Players[uid];
|
||||||
|
shootData.SyncPckt = Player.Controlled.CreateSyncPacket(Player.Id, Player.Unsynced);
|
||||||
|
Player.Unsynced = false;
|
||||||
|
SendReliableToAll(action);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,9 +194,9 @@ namespace NeonTea.Quakeball.Networking.Instances {
|
|||||||
SendUnreliableToAll(pckt);
|
SendUnreliableToAll(pckt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LocalPlayerAction(PlayerAction action) {
|
public override void LocalPlayerAction(PlayerAction action, Serializable serializable = null) {
|
||||||
PlayerActionPckt jump = new PlayerActionPckt(action, LocalPlayer.Id);
|
PlayerActionPckt actionPckt = new PlayerActionPckt(action, serializable, LocalPlayer.Id);
|
||||||
SendReliableToAll(jump);
|
SendReliableToAll(actionPckt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SendPlayerSync() {
|
public override void SendPlayerSync() {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
|
using UnityEngine;
|
||||||
using NeonTea.Quakeball.TeaNet.Packets;
|
using NeonTea.Quakeball.TeaNet.Packets;
|
||||||
|
|
||||||
namespace NeonTea.Quakeball.Networking.Packets {
|
namespace NeonTea.Quakeball.Networking.Packets {
|
||||||
@ -9,8 +9,9 @@ namespace NeonTea.Quakeball.Networking.Packets {
|
|||||||
public Serializable Serializable;
|
public Serializable Serializable;
|
||||||
|
|
||||||
public PlayerActionPckt() { }
|
public PlayerActionPckt() { }
|
||||||
public PlayerActionPckt(PlayerAction action, ulong id = 0) {
|
public PlayerActionPckt(PlayerAction action, Serializable serializable, ulong id = 0) {
|
||||||
Action = action;
|
Action = action;
|
||||||
|
Serializable = serializable;
|
||||||
PlayerId = id;
|
PlayerId = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,9 +23,8 @@ namespace NeonTea.Quakeball.Networking.Packets {
|
|||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Action = PlayerAction.Shoot;
|
Action = PlayerAction.Shoot;
|
||||||
ShootData data = new ShootData();
|
Serializable = new ShootData();
|
||||||
data.Read(buffer);
|
Serializable.Read(buffer);
|
||||||
Serializable = data;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -45,10 +45,28 @@ namespace NeonTea.Quakeball.Networking.Packets {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class ShootData : Serializable {
|
public class ShootData : Serializable {
|
||||||
|
public float Pitch;
|
||||||
|
public float Yaw;
|
||||||
|
public PlayerSyncPacket SyncPckt;
|
||||||
|
|
||||||
|
public ShootData() { }
|
||||||
|
public ShootData(float pitch, float yaw, PlayerSyncPacket syncPckt) {
|
||||||
|
Pitch = pitch;
|
||||||
|
Yaw = yaw;
|
||||||
|
SyncPckt = syncPckt;
|
||||||
|
}
|
||||||
|
|
||||||
public void Read(ByteBuffer buffer) {
|
public void Read(ByteBuffer buffer) {
|
||||||
|
Pitch = buffer.ReadFloat();
|
||||||
|
Yaw = buffer.ReadFloat();
|
||||||
|
SyncPckt = new PlayerSyncPacket();
|
||||||
|
SyncPckt.Read(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Write(ByteBuffer buffer) {
|
public void Write(ByteBuffer buffer) {
|
||||||
|
buffer.Write(Pitch);
|
||||||
|
buffer.Write(Yaw);
|
||||||
|
SyncPckt.Write(buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,6 +19,7 @@ namespace NeonTea.Quakeball.Players {
|
|||||||
private InputAction MoveAction;
|
private InputAction MoveAction;
|
||||||
private InputAction CrouchAction;
|
private InputAction CrouchAction;
|
||||||
private InputAction JumpAction;
|
private InputAction JumpAction;
|
||||||
|
private InputAction ShootAction;
|
||||||
|
|
||||||
private float PreviousPlayerUpdate = -1;
|
private float PreviousPlayerUpdate = -1;
|
||||||
private float PreviousPlayerFullSync = -1;
|
private float PreviousPlayerFullSync = -1;
|
||||||
@ -46,6 +47,13 @@ namespace NeonTea.Quakeball.Players {
|
|||||||
.With("Left", "<Keyboard>/a")
|
.With("Left", "<Keyboard>/a")
|
||||||
.With("Right", "<Keyboard>/d");
|
.With("Right", "<Keyboard>/d");
|
||||||
|
|
||||||
|
ShootAction = new InputAction("Shoot", binding: "<Mouse>/leftButton");
|
||||||
|
ShootAction.performed += _ => {
|
||||||
|
ShootData shootData = new ShootData(Player.Pitch, Player.Yaw, Player.CreateSyncPacket());
|
||||||
|
Networking.Net.Singleton.Instance.LocalPlayerAction(PlayerAction.Shoot, shootData);
|
||||||
|
Player.Shoot();
|
||||||
|
};
|
||||||
|
|
||||||
Terminal.Singleton.RegisterCommand("tp", args => {
|
Terminal.Singleton.RegisterCommand("tp", args => {
|
||||||
if (args.Length != 3) {
|
if (args.Length != 3) {
|
||||||
return false;
|
return false;
|
||||||
@ -61,6 +69,7 @@ namespace NeonTea.Quakeball.Players {
|
|||||||
JumpAction.Disable();
|
JumpAction.Disable();
|
||||||
LookAction.Disable();
|
LookAction.Disable();
|
||||||
MoveAction.Disable();
|
MoveAction.Disable();
|
||||||
|
ShootAction.Disable();
|
||||||
Cursor.lockState = CursorLockMode.None;
|
Cursor.lockState = CursorLockMode.None;
|
||||||
Cursor.visible = true;
|
Cursor.visible = true;
|
||||||
} else {
|
} else {
|
||||||
@ -68,6 +77,7 @@ namespace NeonTea.Quakeball.Players {
|
|||||||
JumpAction.Enable();
|
JumpAction.Enable();
|
||||||
LookAction.Enable();
|
LookAction.Enable();
|
||||||
MoveAction.Enable();
|
MoveAction.Enable();
|
||||||
|
ShootAction.Enable();
|
||||||
Cursor.visible = false;
|
Cursor.visible = false;
|
||||||
Cursor.lockState = CursorLockMode.Locked;
|
Cursor.lockState = CursorLockMode.Locked;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using NeonTea.Quakeball.Networking.Packets;
|
using NeonTea.Quakeball.Networking.Packets;
|
||||||
using NeonTea.Quakeball.Util;
|
using NeonTea.Quakeball.Util;
|
||||||
|
using NeonTea.Quakeball.Interface;
|
||||||
|
|
||||||
namespace NeonTea.Quakeball.Players {
|
namespace NeonTea.Quakeball.Players {
|
||||||
/// <summary>The central glue class for players (both local and remote).</summary>
|
/// <summary>The central glue class for players (both local and remote).</summary>
|
||||||
@ -133,6 +134,10 @@ namespace NeonTea.Quakeball.Players {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Shoot() {
|
||||||
|
Terminal.Singleton.Println("<color=#F00><b>BANG!</b></color>");
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsGrounded() {
|
public bool IsGrounded() {
|
||||||
return CharacterController.isGrounded && Vector3.Dot(GravitationalVelocity, Vector3.down) >= 0;
|
return CharacterController.isGrounded && Vector3.Dot(GravitationalVelocity, Vector3.down) >= 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user