using System.Collections; using System.Collections.Generic; using UnityEngine; using FishNet.Connection; using FishNet.Object; public class ShipContro : NetworkBehaviour { public float forwardsp = 25f, strafsp = 7.5f, hoversp = 5f; private float actforwardsp, actstrafsp, acthoversp; private float forwardacc = 2.5f, strafacc = 2f, hoveracc = 2f; public float lookratesp = 90f; private Vector2 lookinput, screencenter, mousedistance; private float rollinput; public float rollsp = 90f, rollac = 3.5f; public Transform aimTarget; // Reference to the aim target public CharacterController _controller; private Transform camPoint; // Reference to the CamPoint object public override void OnStartClient() { base.OnStartClient(); _controller.enabled = (base.IsServer || base.IsOwner); if (base.IsOwner) { }else { _controller.enabled = false; } } // Start is called before the first frame update void Start() { screencenter.x = Screen.width * .5f; screencenter.y = Screen.height * .5f; Cursor.lockState = CursorLockMode.Confined; _controller = GetComponent<CharacterController>(); } // Update is called once per frame void Update() { if (!base.IsOwner) return; // Look Input lookinput.x = Input.mousePosition.x; lookinput.y = Input.mousePosition.y; mousedistance.x = (lookinput.x - screencenter.x) / screencenter.y; mousedistance.y = (lookinput.y - screencenter.y) / screencenter.y; mousedistance = Vector2.ClampMagnitude(mousedistance, 1f); // Roll Input rollinput = Mathf.Lerp(rollinput, Input.GetAxisRaw("Roll"), rollac * Time.deltaTime); transform.Rotate(-mousedistance.y * lookratesp * Time.deltaTime, mousedistance.x * lookratesp * Time.deltaTime, rollinput * rollsp * Time.deltaTime, Space.Self); // Movement Input float verticalInput = Input.GetAxisRaw("Vertical"); float horizontalInput = Input.GetAxisRaw("Horizontal"); float hoverInput = Input.GetAxisRaw("Hover"); // Calculate actual speeds with acceleration actforwardsp = Mathf.Lerp(actforwardsp, verticalInput * forwardsp, forwardacc * Time.deltaTime); actstrafsp = Mathf.Lerp(actstrafsp, horizontalInput * strafsp, strafacc * Time.deltaTime); acthoversp = Mathf.Lerp(acthoversp, hoverInput * hoversp, hoveracc * Time.deltaTime); // Apply movement Vector3 moveDirection = transform.forward * actforwardsp + transform.right * actstrafsp + transform.up * acthoversp; _controller.Move(moveDirection * Time.deltaTime); } }
Write, Run & Share C# code online using OneCompiler's C# online compiler for free. It's one of the robust, feature-rich online compilers for C# language, running on the latest version 8.0. Getting started with the OneCompiler's C# compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C#
and start coding.
OneCompiler's C# online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
using System;
namespace Sample
{
class Test
{
public static void Main(string[] args)
{
string name;
name = Console.ReadLine();
Console.WriteLine("Hello {0} ", name);
}
}
}
C# is a general purpose object-oriented programming language by Microsoft. Though initially it was developed as part of .net but later it was approved by ECMA and ISO standards.
You can use C# to create variety of applications, like web, windows, mobile, console applications and much more using Visual studio.
Data Type | Description | Range | size |
---|---|---|---|
int | To store integers | -2,147,483,648 to 2,147,483,647 | 4 bytes |
double | to store large floating point numbers with decimals | can store 15 decimal digits | 8 bytes |
float | to store floating point numbers with decimals | can store upto 7 decimal digits | 4 bytes |
char | to store single characters | - | 2 bytes |
string | to stores text | - | 2 bytes per character |
bool | to stores either true or false | - | 1 bit |
datatype variable-name = value;
When ever you want to perform a set of operations based on a condition or set of few conditions IF-ELSE is used.
if(conditional-expression) {
// code
}
else {
// code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression) {
case value1:
// code
break; // optional
case value2:
// code
break; // optional
...
default:
// code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement) {
// code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Array is a collection of similar data which is stored in continuous memory addresses. Array values can be fetched using index. Index starts from 0 to size-1.
data-type[] array-name;
Method is a set of statements which gets executed only when they are called. Call the method name in the main function to execute the method.
static void method-name()
{
// code to be executed
}