| In ein normales Fenster verwandeln  | close  
> gametheory.ch - swiss gamedesign (elearning & knowhow at gamedesign.zhdk.ch [zürcher hochschule der künste])> GAMEDESIGN: Programmierung & GameEngines> Game-Development (3D-Gameengines)> Unity3D> Spielfiguren (NPC's oder Spezialfall Avatar)> NPCs (mit Character Controller)> Einfacher NPC> Simpler NPC (unity3d)

Simpler NPC (unity3d)
 
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen


NPC mit der Struktur

- XYZ (Leeres GameObject + CharacterControll Comp.)
-- 3D-Objekt/Animationsobject
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
0. Unterlage erzeugen, wo der NPC laufen kann
0. Unterlage erzeugen, wo der NPC laufen kann
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
1. Create Empty Object
1. Create Empty Object
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
2. Umbenennen etwa NPC
2. Umbenennen etwa NPC
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
3. Generiere ein Mesh oder nimm ein Primitives-Objekt
3. Generiere ein Mesh oder nimm ein Primitives-Objekt
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
4. Ordne es dem NPC unter
4. Ordne es dem NPC unter
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
5. Kreiere ein neues JavaScript-Asset
5. Kreiere ein neues JavaScript-Asset
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen

6. Benutze folgenden Code

Abwandlung von /Assets/Scrips/FPSWalker.js
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen

NPC.js (als Zip)
[ download zip-file ]
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen

NPC.js

/*
NPC

Simple runs in one direction
*/

var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;

private var moveDirection = Vector3.zero;
private var grounded : boolean = false;

function OnControllerColliderHit (hit : ControllerColliderHit)
{
// CharacterController.OnControllerColliderHit.html
/*

controller The controller that hit the collider
collider The collider that was hit by the controller
rigidbody The rigidbody that was hit by the controller.
gameObject The game object that was hit by the controller.
transform The transform that was hit by the controller.
point The impact point in world space
normal The normal of the surface we collided with in world space
moveDirection Approximately the direction from the center of the capsule to the point we touch.
moveLength

*/
// hit?
// print(hit);

// hit from which direction?
// print(hit.moveDirection);

// hitted object
// print(hit.gameObject.name);

}


function FixedUpdate() {

if (grounded) {

// move to (1,0,0)
moveDirection=new Vector3(0.2,0,0);
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;

// jump
// moveDirection.y = jumpSpeed;
}

// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;

// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}

// onClick
function OnMouseDown()
{
// do something on click of it
}

@script RequireComponent(CharacterController)
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
7. Wende das NPC Script an
7. Wende das NPC Script an
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
8. NPC Struktur
8. NPC Struktur
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
9. NPC im Editor mit Collisionsbox (falls das Objekt durch den Boden fällt -> höher setzen)
9. NPC im Editor mit Collisionsbox (falls das Objekt durch den Boden fällt -> höher setzen)
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen

10. Avatar geht nach rechts, wenn er am Boden ist

// move to (1,0,0)
moveDirection=new Vector3(0.2,0,0);
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
Avatar Position 0
Avatar Position 0
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
Avatar Position 1
Avatar Position 1
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen