Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - WinSTOP

Страницы: 1 2 [3] 4 5 ... 9
31
Вопросы и ответы по Unity3D / Re: Вращение камеры
« : Сентябрь 23, 2012, 16:58:08 pm »
спс) щас посмотрю))

32
Вопросы и ответы по Unity3D / Re: Вращение камеры
« : Сентябрь 23, 2012, 16:29:11 pm »
65р.))

33
Вопросы и ответы по Unity3D / Вращение камеры
« : Сентябрь 23, 2012, 16:13:27 pm »
Привет.. Я вас уже наверно достал) У меня два вопроса за которые я могу заплатить этому сайту, не очень много, но хотя бы)
1) Как вращать камеру при помощи кнопок?
2) Как сделать движение персонажа вперёд назад?
Эти два кода, как бы между собой должны переплетаться тоесть ходит человек (WS) а вращение камеры (AD)...

34
Вопросы и ответы по Unity3D / Re: два управления
« : Сентябрь 22, 2012, 12:47:54 pm »
всё не надо))

35
Вопросы и ответы по Unity3D / два управления
« : Сентябрь 22, 2012, 12:39:10 pm »
хочу по прикалываться с братом погонять двоём в гоночки)) нашёл код в инете гоночек..
одной машиной можно управлять и стрелочками и w s a d, помогите выявить где в этом коде спрятоно управление? уже замучался искать
#pragma strict

//maximal corner and braking acceleration capabilities
var maxCornerAccel=10.0;
var maxBrakeAccel=10.0;

//center of gravity height - effects tilting in corners
var cogY = 0.0;

//engine powerband
var minRPM = 700;
var maxRPM = 6000;

//maximum Engine Torque
var maxTorque = 400;

//automatic transmission shift points
var shiftDownRPM = 2500;
var shiftUpRPM = 5500;

//gear ratios
var gearRatios = [-2.66, 2.66, 1.78, 1.30, 1.00];
var finalDriveRatio = 3.4;

//a basic handling modifier:
//1.0 understeer
//0.0 oversteer
var handlingTendency = 0.7;

//graphical wheel objects
var wheelFR : Transform;
var wheelFL : Transform;
var wheelBR : Transform;
var wheelBL : Transform;

//suspension setup
var suspensionDistance = 0.3;
var springs = 1000;
var dampers = 200;
var wheelRadius = 0.45;

//particle effect for ground dust
var groundDustEffect : Transform;

private var queryUserInput = true;
private var engineRPM : float;
private var steerVelo = 0.0;
private var brake = 0.0;
private var handbrake = 0.0;
private var steer = 0.0;
private var motor = 0.0;
private var skidTime = 0.0;
private var onGround = false;
private var cornerSlip = 0.0;
private var driveSlip = 0.0;
private var wheelRPM : float;
private var gear = 1;
private var skidmarks : Skidmarks;
private var wheels : WheelData[];
private var wheelY = 0.0;
private var rev = 0.0;

//Functions to be used by external scripts
//controlling the car if required
//===================================================================
 
//return a status string for the vehicle
function GetStatus(gui : GUIText) {
gui.text="v="+(rigidbody.velocity.magnitude * 3.6).ToString("f1") + " km/h\ngear= "+gear+"\nrpm= "+engineRPM.ToString("f0");
}

//return an information string for the vehicle
function GetControlString(gui : GUIText) {
gui.text="Use arrow keys to control the jeep,\nspace for handbrake.";
}

//Enable or disable user controls
function SetEnableUserInput(enableInput: boolean)
{
queryUserInput=enableInput;
}

//Car physics
//===================================================================

//some whee calculation data
class WheelData{
var rotation = 0.0;
var coll : WheelCollider;
var graphic : Transform;
var maxSteerAngle = 0.0;
var lastSkidMark = -1;
var powered = false;
var handbraked = false;
var originalRotation : Quaternion;
};

function Start () {
//setup wheels
wheels=new WheelData[4];
for(var i=0;i<4;i++)
wheels[i] = new WheelData();

wheels[0].graphic = wheelFL;
wheels[1].graphic = wheelFR;
wheels[2].graphic = wheelBL;
wheels[3].graphic = wheelBR;

wheels[0].maxSteerAngle=30.0;
wheels[1].maxSteerAngle=30.0;
wheels[2].powered=true;
wheels[3].powered=true;
wheels[2].handbraked=true;
wheels[3].handbraked=true;

for(w in wheels)
{
if(w.graphic==null)
Debug.Log("You need to assign all four wheels for the car script!");
if(!w.graphic.transform.IsChildOf(transform))
Debug.Log("Wheels need to be children of the Object with the car script");

w.originalRotation = w.graphic.localRotation;

//create collider
var colliderObject = new GameObject("WheelCollider");
colliderObject.transform.parent = transform;
colliderObject.transform.position = w.graphic.position;
w.coll = colliderObject.AddComponent(WheelCollider);
w.coll.suspensionDistance = suspensionDistance;
w.coll.suspensionSpring.spring = springs;
w.coll.suspensionSpring.damper = dampers;
//no grip, as we simulate handling ourselves
w.coll.forwardFriction.stiffness = 0;
w.coll.sidewaysFriction.stiffness = 0;
w.coll.radius = wheelRadius;
}

//get wheel height (height forces are applied on)
wheelY=wheels[0].graphic.localPosition.y;

//setup center of gravity
rigidbody.centerOfMass.y = cogY;

//find skidmark object
skidmarks = FindObjectOfType(typeof(Skidmarks));

//shift to first
gear=1;
}

//update wheel status
function UpdateWheels()
{
//calculate handbrake slip for traction gfx
  var handbrakeSlip=handbrake*rigidbody.velocity.magnitude*0.1;
if(handbrakeSlip>1)
handbrakeSlip=1;

var totalSlip=0.0;
onGround=false;
for(w in wheels)
{
//rotate wheel
w.rotation += wheelRPM / 60.0 * -rev * 360.0 * Time.fixedDeltaTime;
w.rotation = Mathf.Repeat(w.rotation, 360.0);
w.graphic.localRotation= Quaternion.Euler( w.rotation, w.maxSteerAngle*steer, 0.0 ) * w.originalRotation;

//check if wheel is on ground
if(w.coll.isGrounded)
onGround=true;

var slip = cornerSlip+(w.powered?driveSlip:0.0)+(w.handbraked?handbrakeSlip:0.0);
totalSlip += slip;

var hit : WheelHit;
var c : WheelCollider;
c = w.coll;
if(c.GetGroundHit(hit))
{
//if the wheel touches the ground, adjust graphical wheel position to reflect springs
w.graphic.localPosition.y-=Vector3.Dot(w.graphic.position-hit.point,transform.up)-w.coll.radius;

//create dust on ground if appropiate
if(slip>0.5 && hit.collider.tag=="Dusty")
{
groundDustEffect.position=hit.point;
groundDustEffect.particleEmitter.worldVelocity=rigidbody.velocity*0.5;
groundDustEffect.particleEmitter.minEmission=(slip-0.5)*3;
groundDustEffect.particleEmitter.maxEmission=(slip-0.5)*3;
groundDustEffect.particleEmitter.Emit();
}

//and skid marks
if(slip>0.75 && skidmarks != null)
w.lastSkidMark=skidmarks.AddSkidMark(hit.point,hit.normal,(slip-0.75)*2,w.lastSkidMark);
else
w.lastSkidMark=-1;
}
else w.lastSkidMark=-1;
}
totalSlip/=wheels.length;
}

//Automatically shift gears
function AutomaticTransmission()
{
if(gear>0)
{
if(engineRPM>shiftUpRPM&&gear<gearRatios.length-1)
gear++;
if(engineRPM<shiftDownRPM&&gear>1)
gear--;
}
}

//Calculate engine acceleration force for current RPM and trottle
function CalcEngine() : float
{
//no engine when braking
if(brake+handbrake>0.1)
motor=0.0;

//if car is airborne, just rev engine
if(!onGround)
{
engineRPM += (motor-0.3)*25000.0*Time.deltaTime;
engineRPM = Mathf.Clamp(engineRPM,minRPM,maxRPM);
return 0.0;
}
else
{
AutomaticTransmission();
engineRPM=wheelRPM*gearRatios[gear]*finalDriveRatio;
if(engineRPM<minRPM)
engineRPM=minRPM;
if(engineRPM<maxRPM)
{
//fake a basic torque curve
var x = (2*(engineRPM/maxRPM)-1);
var torqueCurve = 0.5*(-x*x+2);
var torqueToForceRatio = gearRatios[gear]*finalDriveRatio/wheelRadius;
return motor*maxTorque*torqueCurve*torqueToForceRatio;
}
else
//rpm delimiter
return 0.0;
}
}

//Car physics
//The physics of this car are really a trial-and-error based extension of
//basic "Asteriods" physics -- so you will get a pretty arcade-like feel.
//This may or may not be what you want, for a more physical approach research
//the wheel colliders
function HandlePhysics () {
var velo=rigidbody.velocity;
wheelRPM=velo.magnitude*60.0*0.5;

rigidbody.angularVelocity=new Vector3(rigidbody.angularVelocity.x,0.0,rigidbody.angularVelocity.z);
var dir=transform.TransformDirection(Vector3.forward);
var flatDir=Vector3.Normalize(new Vector3(dir.x,0,dir.z));
var flatVelo=new Vector3(velo.x,0,velo.z);
rev=Mathf.Sign(Vector3.Dot(flatVelo,flatDir));
//when moving backwards or standing and brake is pressed, switch to reverse
if((rev<0||flatVelo.sqrMagnitude<0.5)&&brake>0.1)
gear=0;
if(gear==0)
{
//when in reverse, flip brake and gas
var tmp=brake;
brake=motor;
motor=tmp;

//when moving forward or standing and gas is pressed, switch to drive
if((rev>0||flatVelo.sqrMagnitude<0.5)&&brake>0.1)
gear=1;
}
var engineForce=flatDir*CalcEngine();
var totalbrake=brake+handbrake*0.5;
if(totalbrake>1.0)totalbrake=1.0;
var brakeForce=-flatVelo.normalized*totalbrake*rigidbody.mass*maxBrakeAccel;

flatDir*=flatVelo.magnitude;
flatDir=Quaternion.AngleAxis(steer*30.0,Vector3.up)*flatDir;
flatDir*=rev;
var diff=(flatVelo-flatDir).magnitude;
var cornerAccel=maxCornerAccel;
if(cornerAccel>diff)cornerAccel=diff;
var cornerForce=-(flatVelo-flatDir).normalized*cornerAccel*rigidbody.mass;
cornerSlip=Mathf.Pow(cornerAccel/maxCornerAccel,3);

rigidbody.AddForceAtPosition(brakeForce+engineForce+cornerForce,transform.position+transform.up*wheelY);

var handbrakeFactor=1+handbrake*4;
if(rev<0)
handbrakeFactor=1;
var veloSteer=((15/(2*velo.magnitude+1))+1)*handbrakeFactor;
var steerGrip=(1-handlingTendency*cornerSlip);
if(rev*steer*steerVelo<0)
steerGrip=1;
var maxRotSteer=2*Time.fixedDeltaTime*handbrakeFactor*steerGrip;
var fVelo=velo.magnitude;
var veloFactor=fVelo<1.0?fVelo:Mathf.Pow(velo.magnitude,0.3);
var steerVeloInput=rev*steer*veloFactor*0.5*Time.fixedDeltaTime*handbrakeFactor;
if(velo.magnitude<0.1)
steerVeloInput=0;
if(steerVeloInput>steerVelo)
{
steerVelo+=0.02*Time.fixedDeltaTime*veloSteer;
if(steerVeloInput<steerVelo)
steerVelo=steerVeloInput;
}
else
{
steerVelo-=0.02*Time.fixedDeltaTime*veloSteer;
if(steerVeloInput>steerVelo)
steerVelo=steerVeloInput;
}
steerVelo=Mathf.Clamp(steerVelo,-maxRotSteer,maxRotSteer);
transform.Rotate(Vector3.up*steerVelo*57.295788);
}

function FixedUpdate () {
//query input axes if necessarry
if(queryUserInput)
{
brake = Mathf.Clamp01(-Input.GetAxis("Vertical"));
handbrake = Input.GetButton("Jump")?1.0:0.0;
steer = Input.GetAxis("Horizontal");
motor = Mathf.Clamp01(Input.GetAxis("Vertical"));
  }
else
{
motor = 0;
steer = 0;
brake = 0;
handbrake = 0;
}


//if car is on ground calculate handling, otherwise just rev the engine
  if(onGround)
HandlePhysics();
else
CalcEngine();

//wheel GFX
UpdateWheels();

//engine sounds
audio.pitch=0.5+0.2*motor+0.8*engineRPM/maxRPM;
audio.volume=0.5+0.8*motor+0.2*engineRPM/maxRPM;
}

//Called by DamageReceiver if boat destroyed
function Detonate()
{
//destroy wheels
for( w in wheels )
w.coll.gameObject.active=false;

//no more car physics
enabled=false;
}

@script RequireComponent (Rigidbody)
@script RequireComponent (AudioSource)
мне нужно что у одной машины было одно управление а в другой другое))

36
всё решил проблему не стандартным способом))

Если столкнулся с непонятными трудностями - учись временно упрощать задачу, разбивать её на отдельные моменты, чтобы протестировать.  Выводить любые данные в консоль можно так: Debug.Log(текст_или_переменная);

Я бы попробовал разобрать по частям, что происходит в этой строке:
Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,1)
Я например, в реальном времени вывожу обычно всё что надо для отладки, с помощью тестовой панельки GUI.
мне одно не понятно, что вот эта строка значит? Camera.main  -- выпуливать райкаст через маин камеру?

37
скажите тогда каким кодом можно заменить вот эту строчку??

Цитировать
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,1)) {

38
Повесил на камеру, ругается на вот эту строчку
Цитировать
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,1)) {
ошибка
Цитировать
NullReferenceException
UnityEngine.Camera.ScreenPointToRay (Vector3 position) (at C:/BuildAgent/work/d9c061b1c154f5ae/Runtime/ExportGenerated/Editor/UnityEngineCamera.cs:291)
HealthUp.OnGUI () (at Assets/Shooting/myScript/HealthUp.js:9)

помогите пожалуйста с этим вопросом, без него дальше идти не как...

39
посмотрите дерево Player...
может посоветуете куда лучше вставить этот код?
в данный момент скрипт стоит в First Person Controller

[вложение удалено ]

40
что именно? вот смотрите, что тут может быть равно 0??
вот код:
var text : String = "Name";
var label : Rect;
var body : GameObject;
var up: float = 10;
var hit : RaycastHit;

function OnGUI () {
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,1)) {
if (hit.transform.tag == "HealthTag") {
if(Input.GetKeyDown(KeyCode.E)) {
body.SendMessage("clipsup",up,SendMessageOptions.DontRequireReceiver);
}
GUI.Label(label, "Press E");
}
}
}
посмотрите внимательно ещё раз может вы как профи что-то заметите прям, вглядитесь)) напомню у меня две камеры!

вот это я так предполагаю будит выводиться в консоли "clipsup"?

[вложение удалено ]

41
перевёл код на maincameru
ошибка new
Цитировать
NullReferenceException: Object reference not set to an instance of an object
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.String cacheKeyName, System.Type[] cacheKeyTypes, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.Object[] args, System.String cacheKeyName, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.Invoke (System.Object target, System.String name, System.Object[] args)
HealthUp.OnGUI () (at Assets/Shooting/myScript/HealthUp.js:8)

42
Перенёс скрипт на маин камеру толку нет всеровно ошибка.. я помню месяц назад всё шло, может потому что у меня камера вторая появилась? как можно исправить или как написать что нужна не маин а waepon camera?

43
у мя две камеры, только скрипт на другой камере на waepon щас попробую переставить...
точнее не на waepon а на объекте который на ходится на waepon camere

44
Извините, что возвращаюсь к этой теме..)
Использую ранее выложенный код:
#pragma strict

var text : String = "Name";
var label : Rect;
var body : GameObject;
var up: float = 10;

function OnGUI () {
var hit : RaycastHit;/// запускаем луч
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,1)) { /// бьем в цент  экрана на 1 метр
if (hit.transform.tag == "Ammo") {
if(Input.GetKeyDown(KeyCode.E)) {
body.SendMessage("clipsup",up,SendMessageOptions.DontRequireReceiver);
}
GUI.Label(label, "Press E");
}
}
}

Так вот делаю всё правильно вроде.. выдаёт ошибку:
Цитировать
NullReferenceException
UnityEngine.Camera.ScreenPointToRay (Vector3 position) (at C:/BuildAgent/work/d9c061b1c154f5ae/Runtime/ExportGenerated/Editor/UnityEngineCamera.cs:291)
HealthUp.OnGUI () (at Assets/Shooting/myScript/HealthUp.js:8)
Вот в этой строчке:
Цитировать
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,1)) {

Все переменные объявил всё сделал и ошибка =?

ошибка я так предполагаю из за того что не объявил переменную, но какую???

45
Вопросы и ответы по Unity3D / Re: FPS
« : Сентябрь 17, 2012, 08:33:05 am »
тоесть чем меньше тем больше начинает лагать))

Страницы: 1 2 [3] 4 5 ... 9